programing

Jquery는 첫 번째 ax 함수 호출이 완전히 완료된 후 다른 ax 함수를 계속합니다.

abcjava 2023. 9. 8. 21:03
반응형

Jquery는 첫 번째 ax 함수 호출이 완전히 완료된 후 다른 ax 함수를 계속합니다.

저는 2개의 다른 기능으로 2개의 ajax call을 가지고 있습니다..click을 사용하여 이 두 기능을 호출하고자 합니다.func1은 데이터를 데이터베이스에 삽입하는 것이고, func2는 데이터를 검색하는 것이므로 func1이 완전히 완료될 때까지 기다렸다가 func2만 실행하는 방법이 제 질문입니다.

.delay()를 시도해 보았는데 효과가 있습니다. 하지만 이것은 어리석은 해결책이라고 생각합니다.

  $("#updateLocation").click(function(e){
      e.preventdefault;
        func1();
        func2();
      });
      return false;
    });

    function func1(){
      $.ajax({
        url:'',
      });
});

    function func2(){
      $.ajax({
        url:'',
      });
});

세가지 방법:

func1 성공 시 func2 호출:

    function func1() {
       $.ajax({ ... }).done(func2);
    }

사용하다Deferred펑키가 완료되면 func2를 호출하는 API:

    e.preventDefault();
    $.when(func1).then(func2);

func1을 동기화합니다(권장하지 않음):

    function func1() {
       $.ajax({url: '', async: false});
    }

Ajax 호출은 비동기식이므로, 애플리케이션은 Ajax 호출이 완료될 때까지 '일시 중지'되지 않고, 바로 다음 호출을 시작하기만 하면 됩니다.

JQuery는 통화가 성공할 때 호출되는 핸들러와 통화 중 오류가 발생할 때 호출되는 핸들러를 제공합니다.

$.ajax({
  url: 'ajax/test.html',
  success: function(data) {
    $('.result').html(data);
    alert('Load was performed.');
  },
  error :function(jqXHR, textStatus, errorThrown)
  {
     alert("something went wrong");
  }
});

성공 핸들러에서 두 번째 AJAX 함수를 호출합니다.

func2 안으로 이동 func1->ajax->succe callback

$("#updateLocation").click(function(e) {
    e.preventdefault;
    func1();
    //func2();
});
return false;
});

function func1() {
    $.ajax({
        url: '',
        success: function() { /* other stuff */
            func2();
        }
    });
});

function func2() {
    $.ajax({
        url: '',
    });
});

"비동기" 옵션을 false(첫 번째 axis 호출의 경우)로 설정할 수 있습니다.

즉, 함수 1이 응답을 수신한 후, 즉 실행이 완료된 후 함수 2가 호출됨을 의미합니다.

    function func1(){
      $.ajax({
        url:'',
        async: false
      });
});

호출 fun2 성공 func1

function func1(){
  $.ajax({
    url:'',

    success:function(){
         func2();
    }  
  })

단순히 ajaxComplete 함수를 사용하면 3개의 옵션 파라미터가 있으며 설정에서 parameter ajax action URL 또는 우리가 받은 type data를 기반으로 조건을 설정할 것입니다.

$( document ).ajaxComplete(function( event, xhr, settings ) {
    if( settings.url != '/wp-admin/admin-ajax.php?action=get_location_form' && settings.type === 'POST') {
       get_location_form();      // replace function with your custom logic here
    }
});

다음과 같은 매개 변수로서의 기능을 전달할 수도 있습니다.

var secondFunc = function (func) {

    //Do ajax req or smt
    func("answer", "params");

};
var firstFunc = function() {

    secondFunc(
        function (answerFromFunc2, paramsFromfunc2) {

            var a = answerFromFunc2;
            var b = paramsFromfunc2;

        }
    );

    //Do smt after the function request to the server is done
    var doSmt = "another func or variable";

};
firstFunc();

언급URL : https://stackoverflow.com/questions/12516912/jquery-continue-another-ajax-function-after-the-first-ajax-function-call-is-full

반응형