programing

jQuery가 동기 XMLHTTPRequest를 더 이상 사용하지 않습니다.

starjava 2023. 3. 13. 20:04
반응형

jQuery가 동기 XMLHTTPRequest를 더 이상 사용하지 않습니다.

다른 많은 사이트와 마찬가지로 제 웹사이트도 jQuery를 사용하고 있습니다.개발자 도구를 열면 XMLHTTPRequest가 다음과 같이 경고됩니다.

는 최종 사용자의 경험에 악영향을 미치기 때문에 권장되지 않습니다.

는 그 문서의 일부를 읽었습니다만, 꽤 전문적이었습니다.XMLHTTPRequest에서 WHATWG로의 이행의 결과를 알기 쉽게 설명할 수 있습니까?그것은 2012년에 일어났다고 말한다.

또한 문서에는 워커 외부의 Synchronous XMLHttpRequest가 웹 플랫폼에서 삭제되고 있다고 기재되어 있습니다.이 경우 사용자 에이전트에 서비스가 포함되어 있는 경우 기존 코드를 변경해야 합니까?

이 경고를 피하려면 다음을 사용하지 마십시오.

async: false

어느 쪽이든$.ajax()콜. 이게 유일한 기능이에요.XMLHttpRequest그건 더 이상 권장되지 않습니다.

기본값은 입니다.async: true따라서 이 옵션을 전혀 사용하지 않을 경우 해당 기능이 삭제되어도 코드는 안전합니다.

다만, 표준에서는 삭제될지도 모르지만, 브라우저는 몇 년 동안 계속 서포트하고 있을 것입니다.어떤 이유로 동기화된 AJAX가 필요한 경우async: false경고는 무시하세요.그러나 동기식 AJAX가 좋지 않은 스타일로 간주되는 데는 충분한 이유가 있으므로 이를 피할 방법을 찾아야 합니다.그리고 플래시 애플리케이션을 작성한 사람들도 플래시 애플리케이션이 사라질 것이라고는 생각하지 못했을 것입니다. 하지만 지금은 점차 없어지고 있습니다.

주의:Fetch대체 APIXMLHttpRequest동기 옵션도 제공하지 않습니다.

인정된 답변은 맞지만, ASP에서 발전하고 있다면 다른 원인을 찾았습니다.NET with Visual Studio 2013 이상이며 동기화된 Ajax 요청을 하지 않았거나 잘못된 위치에 스크립트를 정의하지 않았는지 확인합니다.

해결책은 작은 새로 고침 아이콘이 시계 방향으로 가리키고 있는 VS 툴바 드롭다운에서 "브라우저 링크 활성화"를 선택 취소하여 "브라우저 링크" 기능을 비활성화하는 것입니다.이렇게 하고 페이지를 새로고침하면 경고가 중지됩니다.

브라우저 링크 비활성화

이 문제는 로컬 디버깅 중에만 발생하지만 경고의 원인을 알 수 있어 좋습니다.

이는 본문 섹션의 종료 직전에 머리 바깥의 외부 js에 대한 링크를 가지고 있었기 때문에 발생하였습니다.있잖아요, 이것들 중 하나죠

<script src="http://somesite.net/js/somefile.js">

그것은 JQuery와는 아무런 관련이 없다.

다음과 같은 작업을 수행할 수 있습니다.

var script = $("<script></script>");
script.attr("src", basepath + "someotherfile.js");
$(document.body).append(script);

하지만 나는 그 아이디어를 테스트하지 않았다.

@henri-chan의 코멘트로 언급되었지만, 조금 더 주목할 필요가 있다고 생각합니다.

새하면 이 새에는 jQuery/javascript가 됩니다.<script>태그는 동기적으로 실행되어 이 에러가 트리거 됩니다.스타일시트도 마찬가지입니다.

(가 (여러 개) 알 수 .XHR이치노

지금까지의 답변 중 어느 것 하나(모두 정답)도 마찬가지였습니다. async의 파라미터jQuery.ajax()반환된 콘텐츠에는 다음과 같은 스크립트 태그를 포함하지 않습니다.

<div> 
     SOME CONTENT HERE
</div>
<script src="/scripts/script.js"></script> 

2개의 div를 동시에 갱신하기 위해 2개의 AJAX 요구를 연속적으로 호출하고 있는 상황입니다.

function f1() {
     $.ajax(...); // XMLHTTP request to url_1 and append result to div_1
}

function f2() {
     $.ajax(...); // XMLHTTP request to url_2 and append result to div_2
}

function anchor_f1(){
$('a.anchor1').click(function(){
     f1();
})
}

function anchor_f2(){
$('a.anchor2').click(function(){
     f2();
});
}

// the listener of anchor 3 the source of problem
function anchor_problem(){
$('a.anchor3').click(function(){
     f1();
     f2();
});
}

anchor_f1();
anchor_f2();
anchor_problem();

★★★★★★을 클릭합니다.a.anchor3 깃발을을 f2 호출로 대체하여 했습니다.click()★★★★

function anchor_problem(){
$('a.anchor_problem').click(function(){
     f1();
     $('a.anchor_f2').click();
});
}

내 해결 방법:비동기 요청을 사용하여 코드를 버퍼에 덤프합니다.1초마다 버퍼를 체크하는 루프가 있어요.덤프가 버퍼에 도착하면 코드를 실행합니다.타임아웃도 사용합니다.최종 사용자의 경우 페이지는 동기 요구가 사용되는 것처럼 작동합니다.

언급URL : https://stackoverflow.com/questions/27736186/jquery-has-deprecated-synchronous-xmlhttprequest

반응형