我的代码如下所示:
$.get('http://files.mysite.com/data.json', function(data) {
console.log(data);
}, "jsonp");
当我在Firebug的Network
菜单中查看时,我可以看到对JSON
文件的有效调用,当我打开它时,它会获得所有信息。
但是Console
保持沉默。没有AJAX
来电的迹象,也没有记录data
。
我的AJAX
电话与我的JSON
文件不在同一个域中。这就是为什么我使用jsonp
任何想法??
答案 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");