完成后在ajax之后获取变量

时间:2013-08-06 08:44:09

标签: php jquery ajax

 $('#submit_id').click(function(){
    function mark() {
        $.ajax({
          type: "POST",
          url: "request1.php",
          data: $('#form_id').serialize(),
          cache: false,
          success: function(data1){
          }
        });
    }
    function other() {
        $.ajax({
          type: "POST",
          url: "request2.php",
          data: $('#form_id').serialize(),
          cache: false,
          success: function(data2){
          }
        });
    }
    $.when(mark(), other()).done(function(data1, data2)
    {
        console.log(data1);
        $(".results1").html(data1);
        console.log(data2); // Result
        $(".results2").html(data2);

    });

});

我需要将返回的数据传递给变量,如:

  

console:undefined

3 个答案:

答案 0 :(得分:4)

您必须从函数返回promise接口:

function mark() {
        return $.ajax({
          type: "POST",
          url: "request1.php",
          data: $('#form_id').serialize(),
          cache: false
        });
    }

你不需要在这里指定成功回调(但你仍然可以)。

答案 1 :(得分:1)

您的代码应该像这样:

$.when(mark(), other()).done(function(data1, data2){
    console.log(data1);
    $(".results1").html(data1);
    console.log(data2); // Result
    $(".results2").html(data2);
});

function mark() {
   return $.ajax({
      type: "POST",
      url: "request1.php",
      data: $('#form_id').serialize(),
      cache: false
   });
}

function other() {
    return $.ajax({
      type: "POST",
      url: "request2.php",
      data: $('#form_id').serialize(),
      cache: false
    });
}

答案 2 :(得分:-1)

试试这个

$('#submit_id').click(function(){
    function mark() {
        var res = null;
        $.ajax({
          type: "POST",
          url: "request1.php",
          data: $('#form_id').serialize(),
          cache: false,
          success: function(data1){
               res= data1;
          }
        });
        return res;
    }
    function other() {
        var res = null;
        $.ajax({
          type: "POST",
          url: "request2.php",
          data: $('#form_id').serialize(),
          cache: false,
          success: function(data2){
               res= data2;
          }
        });
        return res;
    }
    $.when(mark(), other()).done(function(data1, data2)
    {
        console.log(data1);
        $(".results1").html(data1);
        console.log(data2); // Result
        $(".results2").html(data2);

    });

});