twitter搜索api与jquery错误

时间:2010-10-22 11:43:42

标签: jquery ajax twitter jsonp

我需要使用twitter api请求使用jquery进行Twitter搜索。阅读documentation后,我写了这段代码:

  $.getJSON("http://search.twitter.com/search.json?callback=myFunction&q=stackoverflow");

   function myFunction(r) {
       console.log(r);
    }

search.json无法加载资源>页面执行后,Google Chrome会在控制台上显示此错误:

  

XMLHttpRequest无法加载   http://search.twitter.com/search.json?callback=myFunction&q=stackoverflow。   原点http://localhost/twitter不是   允许的   访问控制允许来源。   search.json无法加载资源

问题是什么?

2 个答案:

答案 0 :(得分:30)

您需要以不同的方式编写它,如下所示:

$.getJSON("http://search.twitter.com/search.json?callback=?&q=stackoverflow", 
  function (r) {
    console.log(r);
});

要触发JSONP,它正在寻找显式 callback=?,它不在您的命名函数版本中。要使用指定的回调,最好使用$.ajax()完整版:

$.ajax({
  url: "http://search.twitter.com/search.json?q=stackoverflow",
  dataType: "jsonp",
  jsonpCallback: "myFunction"
});

function myFunction(r) { console.log(r); }

答案 1 :(得分:3)

只需在答案中添加更多内容,您就可以使用以下代码在每条返回的推文中显示文字。

$.getJSON("http://search.twitter.com/search.json?callback=?&q=stackoverflow",

function(data){

for (i=0; i<data.results.length; i++){

$("#tweets").append("<p><strong>Text: </strong>" + data.results[i].text + "<BR/>" + "<p><strong>Created at: </strong>" + data.results[i].created_at +"</p><br /><br />");

}
});

然后在你的身体html中放入以下div

<div id="tweets"></div>