2011-08-15 5 views
0

내 코드에 관한 문제가 있습니다. 내 프로그램에서, 나는 사용자가 어떤 페이지를 그녀가/tblPlanktblSummary (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'); 
    } 
    } 
} 

플래그 변수를 넣어서 한 번에 하나씩 요청을 보내지 만 동시에 요청을 보냅니다. 다른 아약스 요청 첫 번째 성공)

1) 동기 아약스 요청 또는

2 보내기 :

답변

0

나는 두 가지 방법을 볼 수 있었다.

일반적으로 비동기입니다.

+0

예, 처음 성공하면해야한다는 것을 알고 있습니다. 하지만 지금 당장 가지고있는 코드로 어떻게해야하는지 모르겠습니다. – jayAnn

+0

정상적인 아약스 호출에는 success라는 콜백 함수가 있어야합니다. 두 번째 아약스 호출을 시도 할 수있는 function() {}. – Pehmolelu

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'); 
    } 
} 
관련 문제