我已经建立了我的第一个网站,它可以在本地服务器上运行,但不能在线运行。问题是使用Ajax加载json文件。在发布的版本中,我收到错误消息,指出我的对象未定义。
这是我的代码的(简化)版本,显示了问题:
$.ajax({
url: "json/torp.json",
contentType: "application/json",
success: function (data) {
torp = data;
console.log('great success!');
console.log(torp.items[3]);
},
error: function (/* request, error */) {
console.log('Network error has occurred please try again!');
}
这是在本地服务器上运行时控制台中的消息:
great success! main.js:37:13
Object { id: "brunskar", title: "<h2>Brunskär</h2>", image: "img/countryside.jpg" }
但是当我在网上发布时,这就是我得到的:
great success! main.js:37:13
TypeError: torp.items is undefined
在Utilities Net部分中,我获得状态代码200,并且“回复”选项卡下可读取JSON文件的全部内容,因此看起来文件已加载。但我不明白为什么我的对象未定义。
答案 0 :(得分:0)
听起来像是一个异步问题(你的页面在你的ajax调用之前加载可以返回数据,因此它被返回为未定义)解决这个问题的一种方法是在你的ajax调用中放入一个函数来触发你使用的页面函数呼叫返回的数据。
$.ajax({
url: "json/torp.json",
contentType: "application/json",
success: function (data) {
torp = data;
console.log('great success!');
console.log(torp.items[3]);
function usePageData (); <----calls webpage function utilizing
data
},
error: function (/* request, error */) {
console.log('Network error has occurred please try again!');
}
希望有所帮助!
答案 1 :(得分:0)
通过更改
解决了问题contentType: "application/json"
到
dataType: "json"!
我在其中一条评论中使用了Patrick Evans的提示。谢谢你的帮助!