2013-02-16 2 views
0

jQuery에서 ajax 호출이있는 함수의 실행 방법에 대해 의심스러워했다.함수 jQuery 모바일에 아약스가 포함 된 경우 실행 순서

두 가지 기능을 고려하십시오.

function auth() { 
    $.ajax({ 
     type: "POST", 
     dataType: "json", 
     url: API_URL, 
     data: {.... 
     }, 
     success: function (response) {} 
    }); 
}; 

function getData() { 
    $.ajax({ 
     type: "POST", 
     dataType: "json", 
     url: API_URL, 
     data: {.... 
     }, 
     success: function (response) {} 
    }); 
}; 

와 나는 아래 표와 같은 다른 후 이러한 기능을 하나를 호출 ...

auth(); 
getData(); 

내 상황이 난 단지 '인증을()'완료 한 후 getData()을 실행할입니다 .I 우리를 알고 auth의 성공 기능 내에서 getData()으로 전화 할 수 있습니다. 그러나 내가 알고 싶은 것은, 내가 위에서 언급 한 것처럼 하나씩 호출하면 어떻게 이러한 기능이 실행될 것인가입니다.

모든 종류의 도움을 주시면 감사하겠습니다. 감사합니다.

답변

0

비동기 적으로 실행됩니다. 호출 할 때 대기 상태 (동기식)로 설정할 수 있습니다 ("async = false").

function auth() { 
    $.ajax({ 
     **async: false,** 
     type: "POST", 
     dataType: "json", 
     url: API_URL, 
     data: {.... 
     }, 
     success: function (response) {} 
    }); 
}; 

function getData() { 
    $.ajax({ 
     **aysnc: false,** 
     type: "POST", 
     dataType: "json", 
     url: API_URL, 
     data: {.... 
     }, 
     success: function (response) {} 
    }); 
}; 

이 다음 전화로 이동하기 전에 통화 마무리를 만들 것입니다,하지만 호출 할 때 일반적으로 브라우저를 잠급니다 :

비동기 (기본값 : true)를 유형을 : Boolean 기본적으로 모든 요청은 비동기 적으로 전송됩니다 (즉, 기본적으로 true로 설정 됨). 동기 요청이 필요한 경우이 옵션을 false로 설정하십시오. 도메인 간 요청 및 데이터 유형 : "jsonp"요청은 동기 작업을 지원하지 않습니다. 동기 요청은 일시적으로 브라우저를 잠그고 요청이 활성화되어있는 동안 작업을 비활성화 할 수 있습니다. jQuery 1.8부터는 jqXHR ($ .Deferred)와 함께 async : false를 사용하는 것이 더 이상 사용되지 않습니다. jqXHR.done() 또는 비추천 jqXHR.success()와 같은 jqXHR 객체의 해당 메소드 대신 success/error/complete 콜백 옵션을 사용해야합니다.

의 Src JQM 사이트 : 회신 : 대한 http://api.jquery.com/jQuery.ajax/

+0

도움을 주신 분께 감사드립니다. 자세한 답변을 작성하기 위해 노력해 주셔서 감사합니다. 그것은 나를 도왔다. :) –

+0

도와 주셔서 감사합니다 :) – Red2678

1

deferred objects을 jQuery에 사용할 수 있습니다. 간단히 ajax() 결과를 반환하십시오. auth이 완료되면

function auth() { 
    return $.ajax({ 
     type: "POST", 
     dataType : "json", 
     url: API_URL, 
     data: { .... }, 
     success: function (response) { 
     } 
    });    
}; 

auth.done(getData); 

getData를 호출합니다.

+0

덕분에, 난이 해결 것이라 생각합니다. 이것과는 별도로, 내가 차례로 전화하면 함수가 어떻게 수행 될 것인가? 즉; 두 번째 함수는 첫 번째 함수의 Ajax 요청이 강제 실행될 때까지 기다릴 것입니까? –

+0

두 번째 함수는 첫 번째 Ajax 요청이 성공한 경우에만 실행된다. – Aesthete