跨域 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 的基本操作方法的主要内容,如果未能解决你的问题,请参考以下文章