jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在jQuery中加载小胡子模板返回Document对象而不是原始字符串大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用icanhaz.js和小胡子来加载模板,我正在使用以下方法按需加载小胡子模板:

loadTemplate: function(name,callBACk) {
            if (!ich.templates[name+"_template"]) {
                jQuery.get("/js/templates/"+name+".mustache",function(data) {
                  window.ich.addTemplate(name+"_template",data);
                  callBACk();
                });
             } else {
                callBACk();
             }
        }

但是,检查调试器中返回的数据变量有时会返回Document对象而不是我可以使用的原始字符串.我有时说,因为如果模板文件中的html在文件顶部没有嵌套的DOM元素,模板会按需加载.这是一种非常奇怪的行为,我希望得到一些帮助解释.

所以,例如,模板文件

<div>
     <div>My name is {{name}}</div>
</div>

将在加载时作为Document对象返回.

然而,这个模板文件

<div></div>
 <div>
     <div>My name is {{name}}</div>
 </div>

根据需要作为原始字符串返回.

我不确定为什么没有任何孩子的那个顶级div应该对被识别为Document与字符串的模板产生影响.有任何想法吗?

解决方法

由于您没有为$.get()提供dataType参数,因此您正在以“智能猜测”模式运行. related documentation说:

因此,您的服务器可能会将某些模板发送为text / html(或text / plain),将其他模板作为text / xml发送.检查响应头(使用fiddler或等效工具)检查是否确实如此,这将是很有趣的.

便说一句,指定请求的数据类型应该完全消除这个问题:

jQuery.get("/js/templates/" + name + ".mustache",function(data) {
    window.ich.addTemplate(name + "_template",data);
    callBACk();
},"html");      // Always return HTML as plain text.

大佬总结

以上是大佬教程为你收集整理的在jQuery中加载小胡子模板返回Document对象而不是原始字符串全部内容,希望文章能够帮你解决在jQuery中加载小胡子模板返回Document对象而不是原始字符串所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。