2013-09-10 71 views
0

我正在使用jQuery.ajax和ajaxQueue。我已經引起AJAX請求兩個事件,問題是:AJAX在請求中使用舊數據

  • 兩者都使用相同的數據和操縱它們,
  • 有時他們可以同時啓動一個動作(變化的輸入和點擊按鈕) 。

當它們一起啓動時,首先要改變輸入值,其次要在請求中使用新值。不幸的是,在第二次請求我收到舊數據。

簡單的代碼顯示這種情況(不活動,但主要的問題是一樣的):

<input id="in" value="x"><br> 
<a href="#">click</a> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script src="jquery.ajaxQueue.min.js"></script> 

<script> 
jQuery.ajaxQueue({ 
    url: 'ajax.php', 
    method: 'POST', 
    beforeSend: function() { 
     console.log('long ajax start'); 
    } 
}).then(function() { 
    $('#in').val('y'); 
    console.log('long ajax stop'); 
    console.log('current input value: ' + $('#in').val()); 
}); 

jQuery.ajaxQueue({ 
    url: 'ajax2.php', 
    method: 'POST', 
    data: $('#in').val(), 
    beforeSend: function(xhr, settings) { 
     console.log('short ajax start'); 
     console.log('data in short ajax: ' + settings.data); 
    } 
}).then(function() { 
    console.log('short ajax stop'); 
}); 
</script> 

在控制檯我得到:

long ajax start 
long ajax stop 
current input value: y 
short ajax start 
data in short ajax: x 
short ajax stop 

當然應該是data in short ajax: y。我可以改變什麼來獲得正確的價值?

回答

0

嘗試增加緩存:假兩個請求,就像這樣:

jQuery.ajaxQueue({ 
    url: 'ajax2.php', 
    cache: false, 
    ... 

http://api.jquery.com/jQuery.ajax/

+0

我已經試過這一點,但它不會改變任何東西。從jQuery手冊:「如果設置爲false,它將強制**請求的頁面**不被瀏覽器緩存」。 – Radzikowski