跨域 jsonp 的基本操作方法

Posted

技术标签:

【中文标题】跨域 jsonp 的基本操作方法【英文标题】:Basic how-to for cross domain jsonp 【发布时间】:2011-07-24 17:03:33 【问题描述】:

我到处找这个。我只需要一个简单的“操作方法”拉 jsonp 跨域。我正在使用 jQuery 1.5.1。

我在另一个网站的程序中尝试了以下内容:

$.getJSON("http://www.mydomain.com/testjson.json?jsoncallback=?", function(data) 
    alert("I'm hitting this.");

这根本不起作用。

有没有办法只做一个简单的跨域 jquery JSONP 调用?

谢谢

【问题讨论】:

你最后缺少);。检查控制台是否有错误。 【参考方案1】:

JSONP 需要服务器的配合才能成功。您不能使用 JSONP 拉取随机页面并期望它们成功;服务器需要知道:

    它需要制定 JSONP 响应,而不是 JSON 响应。 它需要知道包装响应的函数的名称。

如果您不确定为什么服务器需要知道这些,或者 JSON 和 JSONP 之间的区别是什么,您应该阅读它们;否则整个事情将毫无意义。对于初学者,请查看 Can anyone explain what JSONP is, in layman terms? 和 http://en.wikipedia.org/wiki/JSONP。

稍微了解一下之后,你可能会发现服务器正在返回

 "key": 1, "bar": "foo" 

(这是有效的 JSON),而不是:

someCallback( "key": 1, "bar": "foo" )

这是一个 JSONP 响应。

【讨论】:

【参考方案2】:

如果您逐步尝试这些http://terrasus.com/detail.jsp?articleID=396,它将正常工作。 如果您生成 jsonp 响应,您应该获取回调值并将其动态设置为您的响应。这篇文章有详细解释

【讨论】:

以上是关于跨域 jsonp 的基本操作方法的主要内容,如果未能解决你的问题,请参考以下文章

jquery jsonp 跨域

使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作附源码和在线测试地址

JSONP原理解析

jsonp: js跨域

JSONP跨域操作

jsonp