jQuery callback for multiple ajax calls

后端 未结 14 1656
夕颜
夕颜 2020-11-22 09:18

I want to make three ajax calls in a click event. Each ajax call does a distinct operation and returns back data that is needed for a final callback. The calls themselves ar

14条回答
  •  难免孤独
    2020-11-22 09:33

    I found an easier way to do it without the need of extra methods that arrange a queue.

    JS

    $.ajax({
      type: 'POST',
      url: 'ajax1.php',
      data:{
        id: 1,
        cb:'method1'//declaration of callback method of ajax1.php
      },
      success: function(data){
      //catching up values
      var data = JSON.parse(data);
      var cb=data[0].cb;//here whe catching up the callback 'method1'
      eval(cb+"(JSON.stringify(data));");//here we calling method1 and pass all data
      }
    });
    
    
    $.ajax({
      type: 'POST',
      url: 'ajax2.php',
      data:{
        id: 2,
        cb:'method2'//declaration of callback method of ajax2.php
      },
      success: function(data){
      //catching up values
      var data = JSON.parse(data);
      var cb=data[0].cb;//here whe catching up the callback 'method2'
      eval(cb+"(JSON.stringify(data));");//here we calling method2 and pass all data
      }
    });
    
    
    //the callback methods
    function method1(data){
    //here we have our data from ajax1.php
    alert("method1 called with data="+data);
    //doing stuff we would only do in method1
    //..
    }
    
    function method2(data){
    //here we have our data from ajax2.php
    alert("method2 called with data="+data);
    //doing stuff we would only do in method2
    //..
    }
    

    PHP (ajax1.php)

     $cb,
        "value" => "ajax1"
        );      
    
        //encoding array in JSON format
        echo json_encode($json);
    ?>
    

    PHP (ajax2.php)

     $cb,
        "value" => "ajax2"
        );      
    
        //encoding array in JSON format
        echo json_encode($json);
    ?>
    

提交回复
热议问题