예시 1, jquery ajax/" target="_blank">jquery ajax 동기화 방법
$.ajax({
url : 'test.php',
type : 'post',
async: false,//동기 방식 사용, true는 비동기 method
data: {'act':'addvideo', 'videoname':videoname},//Json 객체가 여기에 사용됩니다
success: function(data){
//여기에 코드가 있습니다...
} ,
fail:function(){
//코드는 여기에...
}
});
예 2
//javascript
function test()
{
var a= 1 ;
$.ajax({
유형 : 'GET',
url : 'test.php',
데이터 : 'page=112',
성공 :기능(msg)
{
경고(msg);
a= msg;
}
})
경고(a);
}
// test.php
sleep('5'); //5분 동안 휴식
echo 'in';
/*
이 프로그램의 동작은 1(a=1)을 먼저 인쇄하는 것입니다. 그런 다음 5초 후에
에 인쇄합니다. 이 상황을 바탕으로 jquery의 ajax 실행 과정을 알 수 있습니다
비동기 호출이기 때문에
이렇게 하면 변수에 값을 할당할 수 있습니다. 결국 이 문제를 발견했습니다.
매개변수 async가 false로 변경되었습니다. ajax가 결과를 반환하면 프로그램이 계속 실행됩니다.
*/
여기서 async의 기본 설정 값은 true입니다. 이 경우 비동기 방식입니다. 즉, ajax가 요청 후 서버가 반환되기를 기다리는 동안 프런트 데스크에 보냅니다. 서버가 올바른 결과를 반환할 때까지 성공은 실행되지 않습니다. 즉, 요청을 한 후 하나의 스레드와 스크립트가 동시에 실행됩니다. ajax 블록 뒤(다른 스레드) 예:
예제 3
$.ajax({
유형: "POST",
url: "Venue.aspx?act=init",
dataType: "html",
성공:함수(결과 ){ //function1()
f1();
f2();
}
failure:function (result) { > Alert('Failed' ; 이 대기 프로세스), 포그라운드는 function2()를 실행할 것입니다. 즉, 이때 두 개의 스레드가 나타날 것입니다. 여기서는 function1() 및 function2()라고 부르겠습니다.
asyn이 false로 설정되면 ajax 요청은 동기식입니다. 즉, 이때 ajax 블록이 요청을 보낸 후 function1()에서 대기하고 function2()를 실행하지 않는다는 것을 알 수 있습니다. function1() 부분이 실행됩니다.
참고
동기화는 JS 코드가 현재 AJAX에 로드되면 페이지의 모든 코드가 로드를 중지하고 AJAX가 완료된 후 페이지가 일시 중지 상태에서 벗어나는 것을 의미합니다. 계속 실행되며 페이지가 일시중지됩니다.
이 AJAX 코드가 실행되는 동안 다른 코드가 비동기적으로 실행될 수 있습니다.
jquery의 async:false, 이 속성