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 に答える