[JQUERY] jQuery를 아약스 (JSONP)는 타임 아웃을 무시하고 오류 이벤트가 발생하지 않습니다
JQUERYjQuery를 아약스 (JSONP)는 타임 아웃을 무시하고 오류 이벤트가 발생하지 않습니다
해결법
-
1.jQuery를 1.5 이상에서는 JSONP 요청과 오류 처리에 대한 더 나은 지원이있다. 그러나, 당신은 대신에 $ .getJSON의 $ 아약스 방법을 사용해야합니다. 나를 위해,이 작품 :
jQuery를 1.5 이상에서는 JSONP 요청과 오류 처리에 대한 더 나은 지원이있다. 그러나, 당신은 대신에 $ .getJSON의 $ 아약스 방법을 사용해야합니다. 나를 위해,이 작품 :
var req = $.ajax({ url : url, dataType : "jsonp", timeout : 10000 }); req.success(function() { console.log('Yes! Success!'); }); req.error(function() { console.log('Oh noes!'); });
10 초 후에 더 성공적인 요청이없는 경우 시간 초과는 오류 처리기를 트릭을하고 전화를 보인다.
나뿐만 아니라이 주제에 대한 약간의 블로그 게시물을했다.
-
2.이 jQuery를 네이티브 JSONP의 구현 알려진 제한 사항입니다. 아래 텍스트를 IBM developerWorks에서입니다
이 jQuery를 네이티브 JSONP의 구현 알려진 제한 사항입니다. 아래 텍스트를 IBM developerWorks에서입니다
그러나 JSONP 플러그인을 사용할 수 GoogleCode에 오류 처리에 대한 지원을 제공합니다있다. 시작하려면, 당신의 코드를 다음과 같이 변경합니다.
당신이 중 하나를 다운로드하거나 플러그인에 대한 스크립트 참조를 추가 할 수 있습니다.
<script type="text/javascript" src="http://jquery-jsonp.googlecode.com/files/jquery.jsonp-1.0.4.min.js"> </script>
아래와 같이 그런 다음 아약스 호출을 수정합니다 :
$(function(){ //var jsonFeed = "http://api.flickr.com/services/feeds/photos_public.gne"; // correct URL var jsonFeed = "http://api.flickr.com/services/feeds/photos_public.gne_______"; // this should throw a 404 $.jsonp({ url: jsonFeed, data: { "lang" : "en-us", "format" : "json", "tags" : "sunset" }, dataType: "jsonp", callbackParameter: "jsoncallback", timeout: 5000, success: function(data, status){ $.each(data.items, function(i,item){ $("<img>").attr("src", (item.media.m).replace("_m.","_s.")) .attr("alt", item.title) .appendTo("ul#flickr") .wrap("<li><a href=\"" + item.link + "\"></a></li>"); if (i == 9) return false; }); }, error: function(XHR, textStatus, errorThrown){ alert("ERREUR: " + textStatus); alert("ERREUR: " + errorThrown); } }); });
-
3.해결책은 당신이 jQuery를 1.4로 붙어있는 경우 :
해결책은 당신이 jQuery를 1.4로 붙어있는 경우 :
var timeout = 10000; var id = setTimeout( errorCallback, timeout ); $.ajax({ dataType: 'jsonp', success: function() { clearTimeout(id); ... } });
-
4.이 JQuery와의 "공지"제한 할 수있다; 그러나, 잘 문서화하지 않는 것. 내 타임 아웃이 작동하지 않는 이유를 이해하려고 노력 오늘 4시간에 대해 보냈다.
이 JQuery와의 "공지"제한 할 수있다; 그러나, 잘 문서화하지 않는 것. 내 타임 아웃이 작동하지 않는 이유를 이해하려고 노력 오늘 4시간에 대해 보냈다.
나는 jquery.jsonp로 전환하고 그것은 매력을 좋아했다. 감사합니다.
-
5.jQuery를 1.5으로 해결 될 것으로 보인다. 나는 위의 코드를 시도하고 나는 콜백을 얻는다.
jQuery를 1.5으로 해결 될 것으로 보인다. 나는 위의 코드를 시도하고 나는 콜백을 얻는다.
나는 jQuery.ajax (대한 오류 콜백의 문서는) 여전히 다음과 같은 메모를 가지고 있기 때문에 "것 같다"라고 :
-
6.JQuery와는-JSONP jQuery를 플러그인 호세 바실의 대답에 언급 이제 GitHub의에서 찾을 수 있습니다.
JQuery와는-JSONP jQuery를 플러그인 호세 바실의 대답에 언급 이제 GitHub의에서 찾을 수 있습니다.
나는 간단한 예제를 제공 한 불행하게도 문서는 다소 스파르타이다 :
$.jsonp({ cache: false, url: "url", callbackParameter: "callback", data: { "key" : "value" }, success: function (json, textStatus, xOptions) { // handle success - textStatus is "success" }, error: function (xOptions, textStatus) { // handle failure - textStatus is either "error" or "timeout" } });
중대한 통화 $의 .jsonp의 callbackParameter 포함 () 그렇지 않으면 나는 콜백 함수 (JQuery와 - JSONP 버전 2.4.0 일 현재) 서비스 요청의 쿼리 문자열에 주입 결코 극복 것으로 나타났습니다.
이 질문은 오래 알고 있지만, JSONP를 사용하여 오류 처리의 문제는 '해결'아직 없습니다. 이 질문은 맨 위 "JQuery와 JSONP 오류 처리"를 구글에서 그대로 희망이 업데이트는 다른 사람을 도움이 될 것입니다.
-
7.무엇 스크립트의의 OnError 이벤트를 수신 어떻습니까? 나는이 문제를 가지고 있었고, 스크립트 태그가 생성 된 jQuery의 방법을 패치하여 그것을 해결. 여기에 코드의 흥미로운 비트입니다 :
무엇 스크립트의의 OnError 이벤트를 수신 어떻습니까? 나는이 문제를 가지고 있었고, 스크립트 태그가 생성 된 jQuery의 방법을 패치하여 그것을 해결. 여기에 코드의 흥미로운 비트입니다 :
// Attach handlers for all browsers script.onload = script.onreadystatechange = function( _, isAbort ) { if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { cleanup(); // Callback if not abort if ( !isAbort ) { callback( 200, "success" ); } } }; /* ajax patch : */ script.onerror = function(){ cleanup(); // Sends an inappropriate error, still better than nothing callback(404, "not found"); }; function cleanup(){ // Handle memory leak in IE script.onload = script.onreadystatechange = null; // Remove the script if ( head && script.parentNode ) { head.removeChild( script ); } // Dereference the script script = undefined; }
이 솔루션에 대해 어떻게 생각하십니까? 그것은 가능성이 호환성 문제가 발생할 수 있나요?
from https://stackoverflow.com/questions/1002367/jquery-ajax-jsonp-ignores-a-timeout-and-doesnt-fire-the-error-event by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 비활성화 및 HTML 입력 버튼을 활성화 (0) | 2020.10.16 |
---|---|
[JQUERY] 새로 고침 / JQuery와 / 아약스 사용하여 사업부의 내용을 다시로드 (0) | 2020.10.16 |
[JQUERY] jQuery를 : 외부 HTML () 중복] (0) | 2020.10.15 |
[JQUERY] 제대로 jsPDF 라이브러리를 사용하는 방법 (0) | 2020.10.15 |
[JQUERY] 자바 스크립트에서 MVC의 모델 속성에 액세스 (0) | 2020.10.15 |