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

Dja*_*cks 5 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);

});
Run Code Online (Sandbox Code Playgroud)

我可以知道导致错误的原因是什么吗?

我试过用'callback =?' ,'jsoncallback =?' 对于回调,但都导致相同的错误消息.

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

最好的祝福.

juj*_*ule 8

既然你使用JSONP,你应该像这样编写IMHO:

$.ajax(URL, {
    crossDomain:true, 
    dataType: "jsonp", 
    success:function(data,text,xhqr){
        $.each(data, function(i, item) {
            alert(item);
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

正确的参数是,callback但jQuery自动生成一个,所以不要指定它.

  • 这并没有解决上面提到的错误('资源解释'......等等),至少不适合我,并且还在使用`application/json`.它只是在作为`text/javascript`服务时消失,它没有任何明显的副作用. (4认同)