0

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

4

1 回答 1

0

尝试为两个请求添加cache: false ,如下所示:

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

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

于 2013-09-10T22:42:57.410 回答