source

인터넷 익스플로러(전용)가 간헐적으로 AJAX 게시물을 중단합니다.

ittop 2023. 9. 19. 21:23
반응형

인터넷 익스플로러(전용)가 간헐적으로 AJAX 게시물을 중단합니다.

일주일 넘게 머리를 뽑았습니다.

사용방법:

쥬리 1.9.1

JSON 예제와 유사한 malsupform 플러그인 http://malsup.com/jquery/form/ #json

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" /> with of without same error

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

인터넷 익스플로러(8/9/10)는 AJAX POST 요청을 무작위로 중단합니다(매우 무작위).

내 말은, "전혀" http를 통해 아무것도 전송되지 않는다는 것입니다 - 그것은 단지 중단되고 내 눈에 눈물이 맺힙니다.

네트워크 아래 F12 개발자 도구 읽기:

URL my url이 정확합니다.

결과(중단) 문자 그대로 읽기(중단)

공백 입력 - 말 그대로 여기에는 아무것도 없습니다.

수신 0B

202ms 촬영

이니시에이터(보류 중) 문자 그대로 읽음(보류)

요청 캡처 열기:

요청 헤더가 비어 있습니다.

요청 본문이 비어 있습니다.

모든 것이 텅 비었습니다

그러나 Timings 탭에서 Wait Start Gap DOM Content Loaded (이벤트) Load (이벤트) 순서로 표시됨을 확인합니다.

번 시작해야 하나요?아니면 내가 어떻게든 두 번이나 요청을 제출하고 이것이 중단의 원인이 되는 것입니다.

성공적인 POST는 Timing 탭 아래에 Start가 두 번 있다고 말할 것입니다.

console.log errors(오류 기록)를 생성하면 다음을 얻을 수 있습니다.

xmlhttprequest 입니다.준비 상태 4

xmlhttprequest 입니다.상태 : 12019

이 작업을 두 번째로 수행할 때 제출을 클릭합니다.고객들이 좋아하지 않을 것입니다.

$('#formId').ajaxForm( {
    dataType :  'json',
    cache:      false,
    beforeSend: beforeGenericPostForm,
    success :   FormResponse,
    error:      genericError
});

$('#formSubmitId').click(function(e){
    e.preventDefault();

    //perform some custom simple form validation - return false if problem

    $('#formId').submit();
});

그래서 genericError가 호출되고 위의 오류 메시지가 나타납니다.

console.log up 전까지 할 수 있습니다.Send:genericPostForm 전에 기능하면 Die/abort됩니다.

이것은 제가 오랫동안 찾던 것인데 해결책을 찾을 수가 없습니다.

저의 양식은 표준 HTML 양식이며 application/x-www-form- url encoded 를 게시하고 서버로부터 JSON을 헤더 application/json로 수신합니다; charset=utf-8

단서가 있거나 비슷한 문제가 있는 사람?

아니면 이것은 아래에 게시된 것처럼 그냥 표준 버그인가요? 만약 그렇다면 어떻게 해결하나요?

http://bugs.jquery.com/ticket/9352

이것 때문에 출시에 대한 수년간의 개발을 보류하고 조언을 해주시면 감사하겠습니다.

예전에 비슷한 문제가 있었는데 지금까지 발견한 것은 Internet Explorer의 타임아웃 문제였습니다. 제 코드에서 핸들러를 따르는 것을 빈 것으로 정의했습니다.

xdr.onprogress = function () { };
xdr.ontimeout = function () { };
xdr.onerror = function () { }; 

전송 함수를 타임아웃 선언으로 래핑했습니다.

setTimeout(function () {
     xdr.send();
 }, 0);

제 문제를 해결해 줬습니다도움이 되길 바랍니다.

IE 8과 11은 정상 작동하지만 IE 9와 10은 정상 작동하지 않는 동일한 문제가 있었습니다.이전 브라우저들에 대한 크로스 도메인 ajax 요청 문제가 있어서 IE 10 이하에 대해서도 xdomain 요청을 사용하고 있었습니다.

다음을 찾았습니다.

http://cypressnorth.com/programming/internet-explorer-aborting-ajax-requests-fixed/

if ($.browser.msie && window.XDomainRequest) {
// Use Microsoft XDR
var xdr = new XDomainRequest();
xdr.open("get", "someurl");
xdr.onload = function () {
var JSON = $.parseJSON(xdr.responseText);
if (JSON == null || typeof (JSON) == 'undefined')
{
    JSON = $.parseJSON(data.firstChild.textContent);
}
processData(JSON);
};
xdr.onprogress = function(){ };
xdr.ontimeout = function(){ };
xdr.onerror = function () { };
setTimeout(function(){
    xdr.send();
}, 0);
}

그런 다음 다른 작업을 수행하고 jQuery로 최신의 괜찮은 브라우저를 수행합니다.

당신은 혼자가 아닙니다.최근 IE11에서 비슷한 문제로 타격을 받았습니다.내 시나리오는 웹 형태에서 발생하는 두 개의 아약스 콜이 있고, 하나는 페이지의 섹션에 데이터를 채우는 반면 다른 하나는 동일한 도메인을 가리키는 src 속성을 가진 html5 비디오 태그입니다.두 요청 모두 보류 중으로 표시됩니다.둘 다 가둔 것 같아요. (아마도 서로?)이제 사용자가 페이지에서 다른 ajax 호출을 트리거하는 작업을 수행하면 페이지가 정지됩니다.문제를 해결하기 위해 비디오 태그에 '자동 재생'이 도입되었으며(이것은 이전의 ajax 요청을 모두 완료하는 데 도움이 되는 것처럼 보였다), 페이지는 이후에도 정상적으로 동작합니다.다른 브라우저(크롬/파이어폭스)는 이 자동 재생 해킹 없이도 매우 잘 작동합니다.동일한 ajax 호출 집합이 있지만 해당 페이지 중 하나만 끊어지는 다른 페이지도 있기 때문에 이는 약간 당황스러운 일이 아닙니다.저는 이 매개 변수들의 완벽한 조합을 파악할 수 없었습니다.저도 다른 브라우저들이 작동하기 때문에 jquery와는 무관하다고 생각합니다.

ajax를 호출할 때 'type' 매개 변수를 사용해 보십시오.

$('#formId').ajaxForm( {
    type :  'POST',
    dataType :  'json',
    cache:      false,
    beforeSend: beforeGenericPostForm,
    success :   FormResponse,
    error:      genericError
});

KB2962872를 제거해 보십시오.pople soft90/tools 8.52 친절한 안부인사로 내 문제를 해결했습니다.

언급URL : https://stackoverflow.com/questions/17810733/internet-explorer-only-aborts-ajax-posts-intermittently

반응형