2013-08-28 3 views
0

나는이 아약스가 : 나는 JS var에 먼저 아약스를 넣어 또한jQuery를 아약스 beforesend 중단 첫번째 아약스 성공

var.abort(); 

전화를 시도

$.ajax({ 
type: "POST", 
cache: false, 
url: 'update_db.php', 
beforeSend: function(){ 
    $.ajax({ 
    type: "POST", 
    cache: false, 
    async: "false", 
    dataType: "json", 
    url: 'check_db.php', 
    success: function(data){ 
     var nowmod = new Date(); 
     var lastmod = new Date(data[0].lastmod_date); 
     if(nowmod > lastmod){ 
     //abort here the first ajax call and 
       //reload the page after 2.5 sec               
       setTimeout(function(){ 
      location.reload();}, 2500); 

     }            
    } 
    }); 
}, 
success: function(data){ 
    alert("success"); 
} 
}); 

, 내가 시도를

return false 

첫 번째 아약스 호출의 성공 이벤트가 작동합니다. alert "success"!

beforeSend : function(xhr, opts){ 
    if(1 == 1) //just an example 
    { 
     xhr.abort(); 
    } 
}, 

내 문제는 내가 AJAX 호출을 취소하기 전에 DB를 확인해야한다는 것입니다 경우

나는 Stackoverflow에 케이스를 보았다. 모든 제안을 환영합니다. 감사.

+0

왜 $ .ajax를 처음으로 호출하기보다 beforesend에서이 작업을 수행하고 있습니까? 이것은 매우 거꾸로 복잡하게 보인다. 아직 전송되지 않은 ajax 요청을 중단 할 수 없습니다. –

+1

'update_db.php'는'check_db.php'에있는 모든 유효성 검사 로직을 수행해야하므로'check_db.php' ajax 호출을 제거 할 수 있습니다 ... –

+0

대신 업데이트 요청을 보내고 실제로 업데이트하기 전에 데이터베이스, 그것이 이미 있는지 확인 하시겠습니까? Ajax 요청이 적습니다. –

답변

1

당신은 일을 복잡하게 만들고 있습니다. 단지 하나의 아약스 요청을 update_db.php으로 보내고 check_db.php 로직을 update_db.php으로 만드십시오.