Javascript 我的两个ajax同时发送请求
我的代码有问题。在我的程序中,我这里有一个选项框,允许用户选择她/他想在我的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 同时发送请求,这有时会使我的其他表或其他表无法显示正确的输出。那么,我如何解决这个问题,让它一次发送一个请求呢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
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调用。