2012-04-18 3 views
4

참고 : this question re: a pre-jQuery 1.5 JSONP error issue that has now been resolved을 포함한 다른 답변을 확인했습니다. 나는이 문제로 고생하지 않는다고 믿는 JQuery 1.7을 사용하고있다.JQuery 1.7의 JSONP 오류

JQuery 1.5 proper error functions are possible with JSONP 현재 ('The jqXHR Object'참조). 그러나 오류 기능이 실행되지 않는 것 같습니다.

GET https://twitter.com/status/user_timeline/somepretendusername.json?count=2&callback=jQuery171005595548846758902_1334772179012&_=1334772179132 400 (Bad Request) 

에는 .error() 콜백은 단순히 실행하지 않는 것 같습니다 그러나 크롬 개발 도구를 보면

$.getJSON(url, function(response) { 
    console.log(response) 
}).error(function() { console.log('Error occurred.') }) 

는 JSONP 요청은 다음과 같은 오류가 발생합니다. JSONP로 작업 할 때 적절한 오류 처리를하려면 무엇이 필요합니까?

+0

'.fail()'콜백을 사용하여 동일한 결과를 얻나요? –

+0

@KevinB Thanks. Alas .fail()이 작동하지 않는 것 같습니다. – mikemaccana

답변

2

오류 함수는 요청에 오류가있는 경우에만 트리거합니다. 요청이 이루어지고 있지만 사용자 이름이 없으면 Twitter는 400을 반환합니다. 가짜 사용자 이름을 사용하여 시도해 보았지만 동일한 응답을 받았지만 내 사용자 이름을 사용하여 챔피언처럼 일했습니다.

[편집] JSONP로 오류를 처리하는 방법을 묻는 중이다. 어떤 이유로 든, jQuery는이를 위해 좋은 오류 처리를하지 못하는 것 같습니다. JSONP에 대한 실제 오류 처리를 약속하는 플러그인을 찾았습니다. 그것을 확인하십시오 here.

[편집 2] 확인해보세요!

$(document).ready(function() { 
    var url = 'https://twitter.com/status/user_timeline/thisisnotarealtwitterhandle.json?count=2&callback=?'; 
    var jqxhr = $.jsonp({ 
     url: url, 
     success: function(response) { 
      console.log(response) 
     } 
    }).fail(function() { console.log('error'); }); 
}); 
+0

감사합니다. 그러나 실제 사용자 이름을 사용하고 있습니다. 내 질문은 400 오류를 피하는 방법이 아니라 올바른 오류 처리 작업을 수행하는 방법입니다. – mikemaccana

+0

@nailer 실제 질문은 400의 상태 코드가 jQuery에서 실제로 오류를 유발해야하는 경우라고 생각합니다. '.always' 콜백을 사용하여 요청의 상태 코드를 얻은 다음 상태 코드가 400이면이를 수행하고 그렇지 않으면 수행하십시오. –

+0

네 질문에 대해 더 잘 이해하고 있다고 생각합니다. $ .getJSON이 성공하지 못하면 오류가 발생한다는 사실에서 벗어난 것처럼 보입니다. – CWSpear