Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
Jquery 无法在主干+把手中显示外部JSON数据_Jquery_Json_Backbone.js_Coffeescript_Handlebars.js - Fatal编程技术网

Jquery 无法在主干+把手中显示外部JSON数据

Jquery 无法在主干+把手中显示外部JSON数据,jquery,json,backbone.js,coffeescript,handlebars.js,Jquery,Json,Backbone.js,Coffeescript,Handlebars.js,我正在使用Thorax主干+把手开发一个应用程序,并尝试加载一个外部JSON文件,该文件将在模板中使用。与咖啡脚本以及工作 我的测试JSON数据: { "name" : "John Doe" } 我的模板: Thorax.templates['space'] = Handlebars.compile """ <h2>Hello, {{name}}.</h2> """ 整个过程一直持续到在模板中实际显示数据为止。所以我得到的只是你好我试着按照说明操作,并将JS

我正在使用Thorax主干+把手开发一个应用程序,并尝试加载一个外部JSON文件,该文件将在模板中使用。与咖啡脚本以及工作

我的测试JSON数据:

{
   "name" : "John Doe"
}
我的模板:

Thorax.templates['space'] = Handlebars.compile """
  <h2>Hello, {{name}}.</h2>
"""
整个过程一直持续到在模板中实际显示数据为止。所以我得到的只是你好我试着按照说明操作,并将JSON数据分配给一个对象,但没有成功。在您询问之前,我已经对console.log'ed json进行了检查,以确保json数据实际上正在通过。。是的

有什么建议吗?

如果json真的是{name:'John Doe'}对象,那么说@templatejson应该有效。但看起来您在JSON参数中得到的是JSON字符串,而不是已解析的对象。这可以解释您在console.log中看到的结果,控制台中的输出看起来更像

console.log("{\n\"name\" : \"John Doe\"\n}")
会产生什么

console.log({"name": "John Doe"})
会产生

也许您的服务器返回的JSON内容类型错误,所以在调用成功处理程序之前,没有人知道应该执行JSON。尝试修复服务器代码,使其包含一个内容类型:application/json头;然后你可以说:

success: (json) =>
    $(app.appContainer).html(@template(json))
它应该会起作用。如果您不能做到这一点,那么作为最后手段,您可以自己解析JSON:

success: (json) =>
    json = JSON.parse(json)
    $(app.appContainer).html(@template(json))

你不想说@templatejson而不是将传入的{name:'John Doe'}包装到另一个对象中吗?这是有道理的,我之所以这么做是因为我在这里找到了答案:尽管我按照你建议的方式尝试了,但没有运气either@templatejson除非有人在你背后捣乱,否则应该有用。。绝对不能让它像那样工作。我怕有人在胡闹。如果有帮助的话,我很乐意发布更多的代码?真的想弄明白这一点:你确定json是一个对象吗?只是黑暗中的一个镜头,看起来对我来说应该有用。
success: (json) =>
    json = JSON.parse(json)
    $(app.appContainer).html(@template(json))