我正在使用 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
。我可以更改什么以获得正确的值?