2010-04-11 1 views
8

jQuery의 Ajax 메소드를 사용하여 Twitter (검색)에 간단한 요청을하는 코드가 있습니다. 코드는 Safari에서는 제대로 작동하지만 Firefox (3.6.3)에서는 실패합니다. Firefox의 경우, 내 jQuery.ajax 매개 변수 'success'가 호출되지만 제공된 데이터는 null입니다. (. 사파리에서 내가 JSON 데이터를 많이받을)jQuery.ajax가 Twitter에 성공적으로 호출되었지만 Firefox의 경우 null을 반환합니다.

내 Ajax 호출은 다음과 같습니다

$.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); 
    } 
}); 

방화범은 응답 헤더를 보여줍니다

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 

HTTP 상태가 OK입니다 (200) Content-Type이 적절하게 application/json이고 2126 (gzip'd)의 Content-Length는 데이터가 다시 돌아 왔음을 의미합니다. 그러나 Firebug은 Response가 비어 있음을 나타내고, 제공된 데이터를 테스트하면이 응답이 'null'로 표시됩니다. 내가 스택 오버플로 유사한 게시물의 알고

, jQuery $.get() function succeeds with 200 but returns no content in Firefox하고이 문제를 생각할 겁니다로부터 크로스 도메인 보안 관련 가능성이있다,하지만 ... 내가 거기에 많은 자바 스크립트 위젯하고 이것 저것 Ajax를 얻을 것을 알고있다 트위터의 데이터. 이를 허용하기 위해 필요한 것이 있습니까?

+6

아, 확실히 도메인 간 보안 정책에 문제가 있습니다. "& 콜백 =?"을 추가했습니다. GET 요청에 응답하고 모두 작동합니다. – Zhami

+0

콜백 옵션이 추가 된 원래 게시물을 업데이트 할 수 있습니까? - 감사! –

+2

@ Zhami : 답변 한 경우 솔루션을 답변으로 게시해야합니다. –

답변

2

크로스 도메인 Ajax 호출을 시도하고 있습니다. 이렇게하려면 JSONP를 사용해야합니다.

JQuery는 JSONP를 이해하고 모든 기본 트릭을 처리합니다.

& 콜백 =? 귀하의 URL에 JQuery는 상호 도메인 호출로 요청을합니다. 더 중요한 점은 서버에서 JSONP 응답을 이해하고 처리 할 수 ​​있으므로 투명성이 있다는 것입니다.

관련 문제