4
 $('#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);

    });

});

我需要将返回的数据传递到一个变量中,例如:

控制台:未定义

4

3 回答 3

4

你必须从你的函数返回promise接口:

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

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

于 2013-08-06T08:48:39.287 回答
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
    });
}
于 2013-08-06T08:51:56.427 回答
-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);

    });

});
于 2013-08-06T08:54:35.797 回答