AJAX在请求中使用旧数据

时间:2013-09-10 22:28:50

标签: javascript ajax jquery

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

1 个答案:

答案 0 :(得分:0)

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

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

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