我正在使用Google Chrome的JavaScript控制台收到“资源解释为脚本但使用MIME类型application / json传输”错误消息。
我目前正在本地计算机上运行以下代码:
var URL = "";
var YOUTUBE_ROOT = "http://gdata.youtube.com/feeds/api/videos?alt=jsonc&v=2";
var start_index = "&start-index=1";
var callback = "&jsonp=?"
function searchYouTube()
{
var q = encodeURIComponent(jQuery("#query").val());
var query = "&q="+q;
URL = YOUTUBE_ROOT+start_index+query+callback;
alert(URL);
$.getJSON(URL, function(data) {
$.each(data.items, function(i, item) {
alert(item);
});
});
}
jQuery(document).ready(function () {
jQuery("#searchYouTube").click(searchYouTube);
});
我可以知道导致错误的原因吗?
我尝试过使用'callback =?' ,'jsoncallback =?'对于回调,但都导致了 同样的错误信息。
我可以知道如何解决这个问题吗?
最诚挚的问候。
答案 0 :(得分:8)
由于您使用JSONP,您应该像这样编写IMHO:
$.ajax(URL, {
crossDomain:true,
dataType: "jsonp",
success:function(data,text,xhqr){
$.each(data, function(i, item) {
alert(item);
});
}
});
正确的参数是callback
,但jQuery会自动生成一个,所以不要指定它。
答案 1 :(得分:4)
这是一个警告,而不是错误,不应该阻止您的代码工作。
YouTube使用错误的内容类型提供数据是错误的。
答案 2 :(得分:0)
这是Chrome中的一个怪癖,以及它如何将XHR请求与典型的浏览器请求区分开来。
为了防止出现该消息并允许chrome在控制台中以json的形式很好地呈现响应,请将查询字符串附加到您的请求URL。
e.g
var xhr_object = new XMLHttpRequest();
var url = 'mysite.com/party_in_my_pants'; // Using this one, Chrome throws error
var url = 'mysite.com/party_in_my_pants?'; // This one, Chrome is sexy.
xhr_object.open('POST', url, false);