使用JSONP进行Ajax响应,可以看到结果无法使用它

时间:2014-05-25 04:48:51

标签: javascript jquery ajax

我有以下javascript:

jQuery(document).ready( function($) {

    var id = "123";
    var api = "example.com:8999/".concat(id)

    $.ajax({
            url : api,
            type: 'GET',
            dataType: 'jsonp',
            // jsonpCallback: "localcallback",
            success: function (data) { alert('success'); }
    })
});

我可以在chrome dev工具中看到响应,但警报未被调用。最终,我需要使用此响应来设置div的值。

chrome tools的图片:

Response

由于

编辑:发布' POST',正在使用' GET',仍然无法正常工作。另外,我想我更喜欢"妈妈和流行音乐" json,但是由于CORS以及我对网络不好的事实而且我只是试图破解这个。

2 个答案:

答案 0 :(得分:0)

您的服务器未返回JSONP。它返回普通的JSON。如果指定JSONP,则服务器必须显式创建JSONP格式的响应,否则将无法正确接收和处理ajax响应。

仅供参考,JSONP请求是通过脚本标记发送的(它是如何解决跨域请求的同源限制),并且必须将响应格式化为调用函数并传递的脚本请求的数据到该功能。您可以阅读JSONP的工作原理here

答案 1 :(得分:0)

只需在不指定'dataType'属性的情况下进行ajax调用,如果ajax调用成功完成,则控制权应返回到成功回调。

FYI: jQuery将尝试根据该响应的MIME类型查找响应数据类型。

示例:

$( function() {
  $.ajax({
    url :"http://example.com:8999/123",
    type: 'GET',
    success: function (data) {
     console.log(data);  // Prints the response on console
     alert('success'); 
    }
  })
});

如果您只想使用JSONP进行此调用,那么最好与我们分享原因,以便我们可以建议更好的解决方案。