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

Can I change jQuery.ajax's function call arguments (sent in data) through beforeSend event?

本文关键字:数据 参数 函数调用 事件 beforeSent 可以通过 ajax jQuery      更新时间:2023-09-26

我有一个代码是这样的:

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

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

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

更正,在调用 Send 之前,请求已经构造,并且您尝试更改的数据对象已放入请求中。这是之前发送 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;
    }
});