“使用Youtube的JavaScript API将资源解释为脚本,但使用MIME类型application / json进行传输”

时间:2011-03-08 12:55:51

标签: javascript jquery youtube-api

我正在使用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 =?'对于回调,但都导致了 同样的错误信息。

我可以知道如何解决这个问题吗?

最诚挚的问候。

3 个答案:

答案 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);