AJAX - JQuery GET回调不起作用,但JSON文件访问正常

时间:2012-09-05 14:27:30

标签: jquery ajax json get

我的代码如下所示:

$.get('http://files.mysite.com/data.json', function(data) {
    console.log(data);
}, "jsonp");

当我在Firebug的Network菜单中查看时,我可以看到对JSON文件的有效调用,当我打开它时,它会获得所有信息。

但是Console保持沉默。没有AJAX来电的迹象,也没有记录data

我的AJAX电话与我的JSON文件不在同一个域中。这就是为什么我使用jsonp

任何想法??

3 个答案:

答案 0 :(得分:15)

我不完全确定你的问题是什么,如果你得到一个结果但是控制台保持安静你可能会遇到JSON本身的问题...尝试JSONLint来查找问题。

另外我建议你不要使用getJson等。

$.ajax({
    url: http://files.mysite.com/data.json,
    dataType: 'jsonp',
    cache: false,

    beforeSend: function () {
        console.log("Loading");
    },

    error: function (jqXHR, textStatus, errorThrown) {
        console.log(jqXHR);
        console.log(textStatus);
        console.log(errorThrown);
    },

    success: function (data) {
        console.log('Success');
        console.log(data);
    },

    complete: function () {
        console.log('Finished all tasks');
    }
});

通过这种方式,您可以获得一些错误处理和其他不错的小功能,您可以通过beforeSend添加加载微调器,并通过完成删除它。)

编辑: 将错误函数替换为下面的函数,这可以让我们更好地了解问题所在:)

error: function (jqXHR, textStatus, errorThrown) {
  console.log(jqXHR);
  console.log(textStatus);
  console.log(errorThrown);
}

答案 1 :(得分:0)

如果您知道响应将是json,那么最好使用$ .getJSON而不是get。控制台现在应该可以正常工作

$.getJSON('http://files.mysite.com/data.json', function(data) {
 console.log(data);
});

答案 2 :(得分:0)

不支持

jsonp ,请参阅here,仅 xml,json,script,html 因此,如果您没有跨域政策问题,请使用 json

$.get('http://files.mysite.com/data.json', function(data) {
    console.log(data);
}, "json");