ajaxSettings 获取或设置ajax 全局配置
一、什么是 $.ajaxSettings
$.ajaxSettings
获取或设置ajax配置,相当于获取jQuery.ajax(url,[settings])方法中的settings。
$.ajaxSettings的所有属性都可以设置,设置完就是全局的。
比如:要给每个请求都加一个请求头,挨个修改太麻烦,可以用以下方式。
$.ajaxSettings.beforeSend= function(XMLHttpRequest) {
XMLHttpRequest.setRequestHeader("api-version",2);
};
也可以使用以下方式:$.ajaxSetup也是设置全局 AJAX 默认选项。
$.ajaxSetup({
url: "/xmlhttp/",
global: false,
type: "POST"
});
二、$.ajaxSettings.xhr()
$.ajaxSettings.xhr() 返回一个 XMLHttpRequest 对象。
应用:
在ajax请求过程中,可以在 ajax 请求的 xhr 参数里边 获取 新的 XMLHttpRequest对象,并给xhr.upload添加onprogress事件,获取文件总长度e.total 和已上传长度e.loaded。添加完事件后,返回XMLHttpRequest 对象。
代码如下:
$.ajax({
type: "post",
data: "",
url: "http://up.qiniu.com",
processData: false,
contentType: false,
xhr: function () {
//下边这句话是获取 XMLHttpRequest对象,,因为xhr.upload的progress事件里边有文件上传进度
var xhr = $.ajaxSettings.xhr();
console.log(xhr); //原生js对象
if (xhr.upload) {
xhr.upload.addEventListener("progress", function (e) {
//计算文件上传进度
var persent = (e.loaded / e.total * 100).toFixed(2);
$(".nowpro").eq(index).width(persent + "%");
});
//这里要返回对象,否则会请求终止
return xhr;
}
},
success:function (res) {
console.log(res);
}
})
注意:
在 ajax 请求的 xhr 参数里边 获取 新的 XMLHttpRequest对象之后,使用完要返回 对象,否则请求会终止。

浙公网安备 33010602011771号