Javascript 来自AJAX调用的对象在客户端';仅限s服务器
我有一个运行AJAX调用的web应用程序,它可以在本地工作,也可以在测试服务器上工作,但是在客户端,它不能 客户端有了这个应用程序,然后它的架构发生了一些变化,现在他们说它在重新加载到他们的服务器后无法工作。不幸的是,无法在服务器上手动测试,我所拥有的只是他们提供的以下简单错误日志:Javascript 来自AJAX调用的对象在客户端';仅限s服务器,javascript,jquery,json,Javascript,Jquery,Json,我有一个运行AJAX调用的web应用程序,它可以在本地工作,也可以在测试服务器上工作,但是在客户端,它不能 客户端有了这个应用程序,然后它的架构发生了一些变化,现在他们说它在重新加载到他们的服务器后无法工作。不幸的是,无法在服务器上手动测试,我所拥有的只是他们提供的以下简单错误日志: App.jsx:63 Uncaught TypeError: Cannot read property 'name' of undefined at Object.<anonymous> (Ap
App.jsx:63 Uncaught TypeError: Cannot read property 'name' of undefined
at Object.<anonymous> (App.jsx:63)
at i (jquery-3.2.1.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.2.1.min.js:2)
at A (jquery-3.2.1.min.js:4)
at XMLHttpRequest.<anonymous> (jquery-3.2.1.min.js:4)
如果您正在获取JSON,并且希望确保jQuery自动解析响应,那么应该使用
$.getJSON()
$.get()
将在两个条件下自动将响应转换为json。第一种情况是,如果您通过将预期的数据类型指定为“json”来显式地告诉它。第二种情况是,如果您不告诉它,服务器将返回内容类型为application/json
的响应,在这种情况下,jQuery将尝试在您不告诉它的情况下为您解析它$.getJSON()
是您告诉它响应应该是json并为您自动解析它的缩写
参考文献
另一种选择是保持原样,在响应中使用
JSON.parse(JSON)
,但为什么要键入更多?不,这就是它的意思。对象json
中没有settings
键。请尝试使用console.log(json)查看该对象的属性。那么,他们服务器上的settings.json为什么没有该键呢?它的字面意思是在给他们的文件中,并且在本地@taplaroh!,哈哈,我打赌我知道这个问题$.get()
不一定将响应解析为json,除非响应上的内容类型为“application/json”。尝试改用$.getJSON()
。如果json
是一个字符串,那么它就没有设置属性
$.get("settings.json")
.done(function(json) {
name = json.settings.name;
}
$.getJSON("settings.json", function(json){
console.log(json)
});