我可以通过beforeSend事件更改jQuery.ajax的函数调用参数(在数据中发送)吗?

时间:2013-10-26 19:23:15

标签: javascript ajax javascript-events jquery

我有一个类似的代码:

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递增了偏移量变量AFTER它作为数据附加到函数调用。

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

1 个答案:

答案 0 :(得分: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;
    }
});