我在许多请求中使用$.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请求在成功或失败时使用的设置?
答案 0 :(得分:1)
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);
});
答案 1 :(得分:1)
通常情况下,你会做这样的事情:
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
});
答案 2 :(得分:1)
这个问题很老,但是从现在起它可以以较低的复杂性帮助有需要的人。 可以使用.ajaxSend中的设置来装饰jqxhr,这样它将被传递到发送后jqxhr所在的所有流中。
$(document).ajaxSend(function (event, jqxhr, settings) {
jqxhr.settings = settings;
});