ajax知识点总结

ajax各参数

 $.ajax({
        url: "test.json",
        type: "get",
        cache: false,
        async: false,
     data: null,
        beforeSend: function (request) {
            console.log(request);
            console.log("请求之前");
        },
        complete: function (request, testStatus) {
            console.log("\n");
            console.log("请求完成");
            console.log(request);
            console.log(testStatus);
        },
        success: function (data,textStatus, request) {
            console.log("\n");
            console.log("请求成功");
            console.log(data);
        },
        error: function (request, textStatus, errorThrown) {
            console.log("\n");
            console.log("请求出错");
            console.log(request);
            console.log(textStatus);
            console.log(errorThrown);
        },
        dataType: "json",
        dataFilter: function (data, type) {
            console.log("\n");
            console.log("拦截成功");
            console.log("拦截的数据为:"+data);
            console.log("拦截的数据类型为:"+type);
        }
    })

url:
请求的地址,上面的代码是我模拟的json数据,单独挡在了test.json中,当我们向服务器进行请求时,把这个url换成对应的url就行,注意,url后面是一个字符串,我刚开始学习ajax的时候就是总忘写那对双引号。

type:
请求的类型,就是get请求还是post请求,当然,也可以为其它,但是前提是浏览器必须也得支持。默认为get。

cache:
请求时是否使用浏览器缓存的数据,默认为true,即开启缓存。当dataType为xml时,默认为false。

data: 
请求的数据,如果是get方式请求,就是拼接在url问号后面的参数,post请求就是在请求参数中的内容。

async:
是否开启异步请求,默认为true,我认为,把这个改为false的,都是脑袋里有炮,既然都用ajax了,寻求的就是异步的那种快感。

beforeSend:
这里的value为一个函数,就是当请求之前执行的函数,这个函数里有一个参数,就是XMLHttpRequest,这个是一些请求的信息,如果此函数返回false,此次请求就会被取消。

complete:
当请求处理完成之后(success执行完之后)执行的函数,参数为XMLHttpRequest和textStatus,第一个参数和之前的相同,第二个参数为请求的状态,即error或者success。

success:
请求成功执行的函数,参数为data、textStatus、XMLHttpRequest,data就是请求回来的数据。

error: 
当请求失败时执行的函数,参数为XMLHttpRequest, textStatus、errorThrown,error打印出来的信息就像是java抛出来异常的打印堆栈的信息。

dataType:
期望被请求方返回的数据类型,常见的有html、xml、json、jsoup、text、script。

dataFilter:
这个是拦截器,和servlet中的filter是一样的,回拦截到被请求方返回的数据,data就是被拦截的数据,而type就是dataType中填写的内容

ajax的作用:(option 发送http请求

@option: 对象

@method: String get/post 表示请求方式

@url : string 表示 请求地址

@data : object 表示请求参数

@success: function 表示请求成功后,如何处理响应数据

@error : function 表示请求失败后,如何处理失败请求

@async : boolean 表示请求的程序(异步还是同步)

ajax做数据持久化处理

1)客户端产生的事件
2)创建XMLHttpRequest对象
3)对XMLHttpRequest进行配置
4)通过AJAX引擎发送异步请求
5)服务器端接收请求并且处理请求,返回html或者xml内容
6)XML调用一个callback()处理响应回来的内容
7)页面的局部刷新

或者 也可以像下面解释

1.创建XMLHttpRequest对象,也就是创建一个异步调用对象
2.创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息
3.设置响应HTTP请求状态变化的函数
4.发送HTTP请求
5.获取异步调用返回的数据
6.使用JavaScript和DOM实现局部刷新

ajax中的get和post

get和post都是数据提交的方式。
get的数据是通过网址问号后边拼接的字符串进行传递的。post是通过一个HTTP包体进行传递数据的。
get的传输量是有限制的,post是没有限制的。
get的安全性可能没有post高,所以我们一般用get来获取数据,post一般用来修改数据。

ajax 的 同步 和 异步

我们在使用 ajax 一般都会使用异步处理。

异步处理 :就是我们通过事件触发到 ajax,请求服务器,在这个期间无论服务器有没有响应,客户端的其他代码一样可以运行。

同步处理:我们通过实践触发 ajax,请求服务器,在这个期间等待服务器处理请求, 在这个期间客户端不能做任何处理。当 ajax 执行完毕才会继续执行其他代码。

 

同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕同步需要等待返回结果才能继续,异步不必等待,一般需要监听异步的结果

封装ajax

function ajax(option) {
           
            
    // 1、获取需要的数据:方法、地址、参数、callback
	var {method,data,url,success,error,async} = option;
    // 2 发送请求对象  分4步
    // 2.1获取实例化对象

    var xhr = new XMLHttpRequest();
    // 2.2如果是get请求
    if (method === "GET" || method === "get") {
        // 1发送get请求
        // 1.1 处理请求地址 和 请求参数
    	url += "?";
        for (var key in data) {
        	url += `${key}=${data[key]}&`
        }
        url = url.slice(0, url.length - 1);
        console.log(url);
        // 以上为处理 想要的url地址(url+data的处理)
        xhr.open(method, url, async);
        xhr.send();
        // 2.3  处理响应
        xhr.onreadystatechange = function () {
           if (xhr.status == 200 && xhr.readyState == 4) {
            // 请求成功
            // 获取响应数据
               var res = xhr.response;
               // 请求成功后,执行成功处理函数
               success(res);
            } else {
                // 请求失败后,执行失败处理函数
                //  失败情况多,返回xhr对象
                error(xhr)
             }
        }
    }
    if (method === "POST" || method === "post") {
        var para = "";
        for (var key in data) {
             para += `${key}=${data[key]}&`
        }
        para = para.slice(0, para.length - 1);
        console.log(para);
        xhr.open(method, url, true);
        xhr.send(para);
        xhr.onreadystatechange = function () {
            if (xhr.status == 200 && xhr.readyState == 4) {
                // 请求成功
                var res = xhr.response;
                success(res);
            } else {
                  error(xhr)
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值