带有jQuery的jsonp [关闭]


Answers:


144

这是工作示例:

<html><head><title>Twitter 2.0</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head><body>
<div id='tweet-list'></div>
<script type="text/javascript">
$(document).ready(function() {
    var url =  "http://api.twitter.com/1/statuses/user_timeline/codinghorror.json";
    $.getJSON(url + "?callback=?", null, function(tweets) {
        for(i in tweets) {
            tweet = tweets[i];
            $("#tweet-list").append(tweet.text + "<hr />");
        }
    });
});
</script>
</body></html>

请注意所?callback=?请求URL的末尾。这表明getJSON我们要使用JSONP。删除它,将使用原始的JSON请求。由于相同的原产地政策而失败。

您可以在JQuery网站上找到更多信息和示例:http : //api.jquery.com/jQuery.getJSON/


2
我正在尝试使用那些jsonp参数$ .ajax,但无法正常工作。无论如何,这很好,谢谢。
akula1001 2010年

2
是否?callback=?实际上会发送作为URL的一部分,或者是它只是一个种类标志的jQuery的是看到并抓取网址时前关闭试纸?
hippietrail

1
如果您的URL需要参数,该怎么办?(例如:?p=1&s=50
ONDEV

2
我发现这是一个很好的参考起点。回答上面的问题:是的,回调确实会作为参数发送,并且应该作为包装在JSON响应周围的函数发送回。参见stackoverflow.com/questions/7936610/…。要发送其他参数,它们在上述示例的getJSON()的第二个参数中发送。将空值替换为{p:1,s:50}
Ecropolis 2012年

我收到错误代码410-消失了。是否有“永恒”的当前服务在任何地方返回JSON?如此一来,可以测试自己的方法是否有效?
Konrad Viltersten
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.