Ich habe Code, der eine einfache Anfrage an Twitter (Suche) mit jQuery Ajax-Methode zu erhalten. Der Code funktioniert gut in Safari, schlägt aber unter Firefox (3.6.3) fehl. Im Firefox-Fall wird meine jQuery.ajax
Parameter "Erfolg" -Methode aufgerufen, aber die gelieferten Daten sind null. (. In Safari, erhalte ich eine Menge von JSON-Daten)jQuery.ajax Aufruf an Twitter gelingt aber gibt null für Firefox
Mein Ajax-Aufruf ist:
$.ajax({
url: 'http://search.twitter.com/search.json?q='+searchTerm,
dataType: 'json',
async: true,
beforeSend: function(request) {
window.console.log('starting AJAX request to get Twitter data');
},
success: function(data, textStatus, request) {
window.console.log('AJAX request to get Twitter succeeded: status=' + textStatus);
callback(data);
},
error: function(request, status, error) {
window.console.log('Ajax request to get user data --> Error: ' + status);
errback(request, status, error);
}
});
Firebug zeigt Response-Header:
Date Sun, 11 Apr 2010 22:30:26 GMT
Server hi
Status 200 OK
X-Served-From b021
X-Runtime 0.23841
Content-Type application/json; charset=utf-8
X-Served-By sjc1o024.prod.twitter.com
X-Timeline-Cache-Hit Miss
Cache-Control max-age=15, must-revalidate, max-age=300
Expires Sun, 11 Apr 2010 22:35:26 GMT
Vary Accept-Encoding
X-Varnish 1827846877
Age 0
Via 1.1 varnish
X-Cache-Svr sjc1o024.prod.twitter.com
X-Cache MISS
Content-Encoding gzip
Content-Length 2126
Connection close
Die HTTP-Status ist OK (200), der Content-Type ist richtig application/json
, und die Content-Length von 2126 (gzip'd) impliziert, dass Daten zurückkamen. Die zeigt jedoch an, dass die Antwort leer ist, und ein Test der gelieferten Daten zeigt an, dass sie 'null' ist.
Ich kenne eine ähnlichen Position auf Stack-Überlauf, jQuery $.get() function succeeds with 200 but returns no content in Firefox und daraus würde dieses Problem annimmt, ist möglicherweise im Zusammenhang mit Cross-Domain-Sicherheit, aber ... Ich weiß, es gibt viele JavaScript-Widgets und so weiter, dass Ajax erhalten Daten von Twitter. Gibt es etwas, das ich aktivieren muss, um dies zu ermöglichen?
Ah, ist sicherlich ein Problem mit domänenübergreifenden Sicherheitsrichtlinien. Habe ein "& callback =?" an die GET-Anfrage, und alles funktioniert jetzt. – Zhami
Können Sie Ihren ursprünglichen Beitrag mit der hinzugefügten Rückrufoption aktualisieren? - Vielen Dank! –
@ Zhami: Wenn Sie es beantwortet haben, sollten Sie Ihre Lösung als Antwort hier posten. –