Javascript js-接受作为变量的输入,但不接受ajax获得的输入:如何导入或解决问题
例如,模板和json可以在功能上移动到一个变量:Javascript js-接受作为变量的输入,但不接受ajax获得的输入:如何导入或解决问题,javascript,jquery,templating,Javascript,Jquery,Templating,例如,模板和json可以在功能上移动到一个变量: template = '<h1>{{header}}</h1>{{#items}}{{#first}}<li><strong>{{name}}</strong></li> {{/first}}{{#link}} <li><a href="{{url}}">{{name}}</a></li> {{/link}}{{/items}}
template = '<h1>{{header}}</h1>{{#items}}{{#first}}<li><strong>{{name}}</strong></li> {{/first}}{{#link}} <li><a href="{{url}}">{{name}}</a></li> {{/link}}{{/items}}{{#empty}} <p>The list is empty.</p>{{/empty}}';
及
Chrome的控制台显示与var完全相同的内容,但输入时胡须会断裂,因为它们在输入时“未定义”:
Uncaught TypeError: Cannot call method 'indexOf' of Undefined
我尝试过更改数据类型,使用$.parseJSON对其进行解析,但从外部文件导入模板或JSON时,任何操作都不起作用
如果有任何解决javascript对象故障的技巧,也将不胜感激
更新:
代码如下:
JSON.txt就是JSON。它被正确地拉着。console.log(data.header)正确返回。
must_template.js是胡须模板文件(从外部拖动将允许不同的主题)。两者之间的区别是什么?json2.txt和must_template.js中有什么内容 使用以下命令解析JSON:
data = JSON.parse(data);
要查看对象中的内容,请使用Firebug或Safari/Chrome中的JS控制台,并使用:
console.log(data);
如果您获得更多信息,我们可以提供更多帮助:)这是一个范围问题
模板变量在$.ajax()调用之前定义,该值仅在$.ajax调用中有效。ajax请求是异步请求。如果在ajax函数调用之外执行mustache to_html,那么它将不起作用。因为它将在AJAX请求之前执行 尝试以下方法 must_template.html文件将包含
<h1>{{header}}</h1>
{{#items}}{{#first}}
<li><strong>{{name}}</strong></li>
{{/first}}{{#link}} <li><a href="{{url}}">{{name}}</a></li> {{/link}}{{/items}}
{{#empty}} <p>The list is empty.</p>{{/empty}}
有关Mustache/jQuery的工作示例,请参见
这是修复它的代码:json=$.ajax({url:“theJson.txt”,dataType:“json”,async:false});
console.log(data);
<h1>{{header}}</h1>
{{#items}}{{#first}}
<li><strong>{{name}}</strong></li>
{{/first}}{{#link}} <li><a href="{{url}}">{{name}}</a></li> {{/link}}{{/items}}
{{#empty}} <p>The list is empty.</p>{{/empty}}
$.ajax({
url: "must_template.html",
dataType: "html",
success: function(data) {
var template = data;
$.ajax({
url: "theJson2.txt",
dataType: "json",
success: function(data2) {
var json = data2;
var html = Mustache.to_html(template, json);
$("#yourtargettag").html(html);
}
});
}
});