1

我有一个类似这样的代码:

var offset = 1;
$.ajax({
    url: /www/loadmoredata,
    type: 'POST',
    data: {
        limit: 1,
        offset: offset
    },
    beforeSend: function (xhr, ajaxOptions, thrownError) {
        offset++;
    }
}); 

现在我希望通过 ajax 传递的偏移量为 2,因为我在 beforeSend 中递增,它在处理 AJAX 之前运行。但是,似乎 beforeSend 在将偏移变量作为数据附加到函数调用之后增加了偏移变量。

我的问题是:我做错了什么还是这不是 beforeSend 方法的用途?如果不是,那么按照我的意图做的正确方法是什么?

4

1 回答 1

3

更正一下,在调用 beforeSend 之前,Request 已经被构造,并且您尝试更改的数据对象已被放入 Request 中。这是 beforeSend http://api.jquery.com/jQuery.ajax/的文档。ajaxOptions 参数不是当前 ajax 请求的选项。因此,您将能够更改传递给请求的数据。

也许如果您给我们一个更高层次的想法,您正在努力实现什么,我们可以提供帮助?

-- 原始建议 --

偏移量仍在范围内,但您的期望不正确。试试这个:

var offset = 1;
$.ajax({
    url: /www/loadmoredata,
    type: 'POST',
    data: {
        limit: 1,
        offset: offset
    },
    beforeSend: function (xhr, ajaxOptions, thrownError) {
        ajaxOptions.data.offset += ajaxOptions.data.offset;
    }
});
于 2013-10-26T19:29:38.150 回答