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对象之后,使用完要返回 对象,否则请求会终止。

posted @ 2022-07-30 01:30  Dreams_log  阅读(1270)  评论(0)    收藏  举报