Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js-接受作为变量的输入,但不接受ajax获得的输入:如何导入或解决问题_Javascript_Jquery_Templating - Fatal编程技术网

Javascript js-接受作为变量的输入,但不接受ajax获得的输入:如何导入或解决问题

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}}

例如,模板和json可以在功能上移动到一个变量:

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);                              
                      }
                  });
       }
   });