我正在使用jQuery.ajax和ajaxQueue。我有两个导致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 :(得分:0)
尝试为这两个请求添加 cache:false ,如下所示:
jQuery.ajaxQueue({
url: 'ajax2.php',
cache: false,
...