如何使用$ .ajax将正常的JSON检索为JSONP?

时间:2014-06-28 21:53:38

标签: jquery ajax json jsonp cross-domain-policy

我有一个正常的JSON提要,我在一个网址(normalJSONfeed)进行轮询。我每次都得到cross origin policy error。当我无法更改JSON提要(换句话说,我无法在函数调用中包装JSON提要)时,如何更改$.ajax函数以解决此限制。

$.ajax({
    type : "GET",
    dataType : "jsonp",
    url : '/normalJSONfeed',
    data : {}
    success: function(obj){

    }
});

1 个答案:

答案 0 :(得分:1)

您无法在代码中更改任何内容,只允许您将JSON请求为JSONP。由于JSONP请求使用脚本标记来请求数据,因此在加载和处理数据之间没有任何关系可以影响它。

如果您无法更改服务器发送的内容,则需要一台服务器,它可以在响应到来之前更改响应。我已经设置a proxy server确实将JSON响应更改为JSONP响应。请求代理页面并将返回JSON的资源的URL作为参数发送。

示例:

$.ajax({
    dataType : "jsonp",
    url : 'http://jsonp.guffa.com/Proxy.ashx?url=' + encodeURIComponent('www.someserver.com/normalJSONfeed'),
    success: function(obj){

    }
});