获取 jquery $.ajax 请求使用的设置

Get settings used by jquery $.ajax request

本文关键字:设置 请求 jquery ajax 获取      更新时间:2023-09-26

我使用$.ajax处理许多请求,每个请求都有传递给函数的不同设置和值。

我需要检查这些设置是否正确合并到$.ajax设置中。

var options = {
  endpoint: '/path/page'
  method : "POST",
  mode: 'abort',
  data : { value : $(this).val() },
  headers : { 'X-Key' : 'value' }
}
$.ajax( $.extend(true, {
    url: endpoint,
    type: 'GET',
    cache: true,
    dataType: 'json',
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
    headers : {
        'X-Same-Domain':'1',
    },
    async: true,
    data: data,
    timeout: 5000,
}, options) )

如何在控制台中查看 $.ajax 请求在成功或失败时使用的那些设置?

这个问题很老了,但从现在开始,它可以以低复杂性帮助那些有需要的人。可以使用 .ajaxSend 中的设置来装饰 jqxhr,这样它将被传递到 jqxhr 发送后所在的所有流中。

$(document).ajaxSend(function (event, jqxhr, settings) {
  jqxhr.settings = settings;
});

jQuery似乎不支持这一点,但你可以自己实现:

function ajax(options) {
    var defer = $.Deferred();
    $.ajax(options)
        .done(function(data, textStatus, jqXHR) {
            defer.resolve(data, textStatus, jqXHR, options);
        })
        .fail(function(jqXHR, textStatus, errorThrown) {
            defer.reject(jqXHR, textStatus, errorThrown, options);
        });
    return defer.promise();
}

用法

var options = {
    endpoint: '/path/page'
    method : "POST",
    mode: 'abort',
    data : { value : $(this).val() },
    headers : { 'X-Key' : 'value' }
};
ajax($.extend(true, {
    url: endpoint,
    type: 'GET',
    cache: true,
    dataType: 'json',
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
    headers : {
        'X-Same-Domain':'1',
    },
    async: true,
    data: data,
    timeout: 5000,
}, options)).done(function(data, textStatus, jqXHR, ajaxOptions) {
    console.log("done", ajaxOptions);
}).fail(function(jqXHR, textStatus, errorThrown, ajaxOptions) {
    console.log("fail", ajaxOptions);
});

通常,你会做这样的事情:

var defaults = {...};
...
var options = {...};
var ajaxSettings = $.extend(true, {}, defaults, options);
console.log(ajaxSettings);
$.ajax(ajaxSettings).then(function(result) {
    // success handler
    // `ajaxSettings` is still in scope here
}, function(error) {
    // error handler
    // `ajaxSettings` is still in scope here
});