Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的两个ajax同时发送请求_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 我的两个ajax同时发送请求

Javascript 我的两个ajax同时发送请求,javascript,jquery,ajax,Javascript,Jquery,Ajax,我的代码有问题。在我的程序中,我这里有一个选项框,允许用户选择她/他想在我的tblPlank和tblSummary中显示的页面tblSummary和tblPlank都是jqgrid。每次他选择一个页面并单击一个按钮时,它都会调用函数displayPageNum。现在,我的问题是,这两个: url:'processjson.php?path='+encodeURI'getData/tally/page'+'&json='+encodeURIJSON.stringifydatas 及 url:'pr

我的代码有问题。在我的程序中,我这里有一个选项框,允许用户选择她/他想在我的tblPlank和tblSummary中显示的页面tblSummary和tblPlank都是jqgrid。每次他选择一个页面并单击一个按钮时,它都会调用函数displayPageNum。现在,我的问题是,这两个:

url:'processjson.php?path='+encodeURI'getData/tally/page'+'&json='+encodeURIJSON.stringifydatas

url:'processjson.php?path='+encodeURI'getReport/tallySummary'+'&json='+encodeURIJSON.stringifydatas

同时发送请求,这有时会使我的其他表或其他表无法显示正确的输出。那么,我如何解决这个问题,让它一次发送一个请求呢

function displayPageNum(){  
 var flag = 0;
  if ($("#page option:selected").text() != 'all'){    
    var datas = {
      "SessionID": $.cookie("SessionID"),
      "dataType":"data",
      "transaction_id":$('.transactionID').attr('id'),
      "page":$("#page option:selected").text()
    };
    $('#tblPlank').setGridParam({
    url:'processjson.php?path=' + encodeURI('getData/tally/page') + '&json=' + encodeURI(JSON.stringify(datas)), 
      datatype: primeSettings.ajaxDataType
    });
    $('#tblPlank').trigger('reloadGrid');     
    flag =1;
    if (flag == 1){
      var datas = {
        "SessionID": $.cookie("SessionID"),
        "dataType":"data",
        "transaction_num":$('.transactionID').val(),
        "page":$("#page option:selected").text()
      };
       $('#tblSummary').setGridParam({
        url:'processjson.php?path=' + encodeURI('getReport/tallySummary') + '&json=' + encodeURI(JSON.stringify(datas)), 
        datatype: primeSettings.ajaxDataType      
      });             
      $('#tblSummary').trigger('reloadGrid');
    }
  }
 }
我放置flag变量只是为了使发送请求一次一个,但仍然同时发送请求。

我可以看到两种方法:

1同步ajax请求或

2当第一个请求成功时,发送其他ajax请求


通常它们是异步的。

更好的是,您可以使用jQuery Deffered,它允许您在两个请求都完成时进行成功回调

var ajax1 = function (){
    return $.get('first.html');
}

var ajax2 = function (){
     return $.get('second.html');
}

$.when( ajax1(), ajax2()).then(function(){
  alert('Both Done!');
});
但是,如果要确保一次发送的请求不能超过1个,则可以跟踪请求对象

var myRequest;

var ajaxRequest = function () {
    if (!myRequest) {
        var myRequest = $.get('myWebservice.html');
    }
}

是的,我知道如果第一次成功的话,我必须这么做。但是对于我现在的代码,我不知道怎么做。在普通的ajax调用中,应该有一个名为success:function{}的回调函数,您可以尝试在其中进行第二个ajax调用。