2010-10-22 1 views
15

Мне нужно запросить поиск в twitter с помощью jquery с помощью twitter api. После чтения documentation я пишу этот код:twitter search api с ошибкой jquery

$.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 не разрешено Access-Control-Allow-Origin. search.json Не удалось загрузить ресурс

В чем проблема?

ответ

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); } 
+0

это работает .... Большое спасибо !!! – rizidoro

+0

@ rizidoro - welcome :) –

+1

Я хочу, чтобы кто-то документировал это более правильно, я потратил час, пытаясь понять, почему им получить доступ запрещен! – Ayyash

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>