Ajax请求适用于本地服务器但不适用于联机

时间:2017-08-06 06:33:09

标签: javascript jquery ajax

我已经建立了我的第一个网站,它可以在本地服务器上运行,但不能在线运行。问题是使用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文件的全部内容,因此看起来文件已加载。但我不明白为什么我的对象未定义。

2 个答案:

答案 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的提示。谢谢你的帮助!