2011-08-15 37 views
0

我有一个关于我的代码的问题。在我的程序中,我在这里有一个选项框,它允许用户选择要在tblPlanktblSummary(tblSummary和tblPlank都是jqgrid)中显示的页面。 Evrytime选择一个页面并点击一个按钮,它会调用函数displayPageNum。现在,我的问题是,这二:我的两个ajax同时发送请求

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'); 
    } 
    } 
} 

我把标志变量只是一次发送一个请求,但仍然同时发送请求。

回答

0

我可以看到两种方式:

1)同步Ajax请求或

2)发送其他Ajax请求时,第一个成功。

通常它们是异步的。

+0

是的,我知道如果第一次成功,我必须这样做。但是现在我有了这些代码,我不知道该怎么做。 – jayAnn

+0

在正常的ajax调用中,应该有一个名为success:function(){}的回调函数,您可以在其中尝试进行第二次ajax调用。 – Pehmolelu

0

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

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

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

$.when(ajax1(), ajax2()).then(function(){ 
    alert('Both Done!'); 
}); 

但是,如果你想确保你一次不能发送多个请求,你可以跟踪请求对象。

var myRequest; 

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