我的代码有问题。在我的程序中,我在这里有一个选项框,允许用户选择她/他想要在我的tblPlank
和tblSummary
中显示的页面(tblSummary和tblPlank都是jqgrid)。 Evrytime他选择一个页面并单击一个按钮,它将调用函数displayPageNum
。现在,我的问题是,这两个:
url:'processjson.php?path=' + encodeURI('getData/tally/page') + '&json=' + encodeURI(JSON.stringify(datas)),
和
url:'processjson.php?path=' + encodeURI('getReport/tallySummary') + '&json=' + encodeURI(JSON.stringify(datas)),
,
同时发送请求,有时会使我的其他表(或其他)不显示正确的输出。那么如何解决这个问题,让它一次发送一个请求呢?
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变量只是为了一次发送一个请求,但仍然同时发送请求。
答案 0 :(得分:0)
我可以看到两种方式:
1)同步ajax请求或
2)第一次成功时发送其他ajax请求。
通常它们是异步的。
答案 1 :(得分:0)
更好的是,您可以使用 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');
}
}