9

我的代码如下所示:

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

当我查看NetworkFirebug 的菜单时,我可以看到对我的文件的有效调用JSON,当我打开它时,它包含了所有信息。

Console依然沉默。没有来电的迹象,AJAX也没有我的data.

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

有任何想法吗??

4

3 回答 3

17

我不完全确定您的问题是什么,如果您得到结果但控制台保持安静,您可能会遇到 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 添加加载微调器,并通过 complete 将其删除:)

编辑:用下面的函数替换错误函数,这应该让我们更好地了解问题所在:)

error: function (jqXHR, textStatus, errorThrown) {
  console.log(jqXHR);
  console.log(textStatus);
  console.log(errorThrown);
}
于 2012-09-05T14:38:38.803 回答
0

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

$.getJSON('http://files.mysite.com/data.json', function(data) {
 console.log(data);
});
于 2012-09-05T14:36:22.473 回答
0

不支持jsonp见这里,只有xml, json, script, html 所以如果你没有跨域策略问题,请改用json

$.get('http://files.mysite.com/data.json', function(data) {
    console.log(data);
}, "json");
于 2012-09-05T14:37:20.640 回答