【问题标题】:JSONP request to TinySong always failing对 TinySong 的 JSONP 请求总是失败
【发布时间】:2014-02-23 13:43:14
【问题描述】:

我正在尝试使用以下代码向 tinysong api 发送 JSONP 请求

var url = "http://tinysong.com/s/calvin+harris?format=json&limit=3&key=api_key"

function jsonpCallback(json) {
    console.log(json);
}

var script = document.createElement('script');
script.src = url+'&callback=jsonpCallback';
document.body.appendChild(script);

但继续在控制台中获取消息

Resource interpreted as Script but transferred with MIME type text/html: 

我也尝试了以下方法并得到了同样的错误

$.ajax({
    type: 'GET',
    url: url,
    jsonpCallback: 'jsonCallback',
    dataType: 'jsonp',
    success: function(json) {
        console.log(json);
    },
    error: function(e) {
        console.log(e.message);
    }
});

function jsonCallback(json) { 
    console.log(json); 
}

我确定 api 正在响应,因为我在 chrome 中检查了网络选项卡并且可以看到来自 API 的响应。您对我能做什么有什么建议,或者我需要编写一个服务器端 API 来 ping TinySong api?

【问题讨论】:

    标签: javascript jquery html jsonp


    【解决方案1】:

    尝试在您的 ajax 调用中添加项目

        jsonp:true,
    

    在您的 jsonpCallback 之前或之后的行 还要确保您的网址附加了“&callback=jsonpCallback”。

    我正在查看我的一些旧代码,这些是我看到的唯一区别

    【讨论】:

    • 所以你的建议有点奏效,我可以看到响应总是转到错误回调。即使它在错误回调中,我现在也在研究如何提取我需要的数据。
    • 问题似乎是 TinySong API 不支持 JSONP。它以 text/html 而不是 javascript 的形式发回数据。此外,它忽略了回调参数,因此从不调用客户端的成功函数。
    猜你喜欢
    • 2014-08-06
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 2014-05-21
    • 2019-05-20
    • 1970-01-01
    • 2013-09-09
    相关资源
    最近更新 更多