原生js创建Ajax对象

    let xhr = new XMLHttpRequest();

    xhr.open(‘get’,”服务器地址”,true); // get为发送数据的方式,共有四种方法

    xhr.send(Data);// Data为发送的数据,可选

    xhr.onreadystatechange = function(){

    console.log(xhr.readyState);// 获取就绪状态码

    console.log(xhr.status);// 获取http状态码

    console.log(xhr.responseText);// 获取服务器响应的非XML对象的数据

    console.log(xhr.responseXML);// 获取服务器响应的XML对象

    }

    jQuery的Ajax方法

    $.ajax({

    key:value,

    key:value,

    })

    jQuery的Ajax方法,将参数放在括号中的花括号中,当成一个对象传给Ajax方法,下面为可选的参数,其中url是必选的.

    url 规定发送请求的 URL。默认是当前页面。
    data 规定要发送到服务器的数据。
    dataType 预期的服务器响应的数据类型。
    async 布尔值,表示请求是否异步处理。默认是 true。
    type 规定请求的类型(GET 或 POST)。
    success(result,status,xhr) 当请求成功时运行的函数。
    beforeSend(xhr) 发送请求前运行的函数。
    cache 布尔值,表示浏览器是否缓存被请求页面。默认是 true。
    complete(xhr,status) 请求完成时运行的函数(在请求成功或失败之后均调用,即在 success 和 error 函数之后)。
    contentType 发送数据到服务器时所使用的内容类型。默认是:”application/x-www-form-urlencoded”。
    context 为所有 AJAX 相关的回调函数规定 “this” 值。
    dataFilter(data,type) 用于处理 XMLHttpRequest 原始响应数据的函数。
    error(xhr,status,error) 如果请求失败要运行的函数。
    global 布尔值,规定是否为请求触发全局 AJAX 事件处理程序。默认是 true。
    ifModified 布尔值,规定是否仅在最后一次请求以来响应发生改变时才请求成功。默认是 false。
    jsonp 在一个 jsonp 中重写回调函数的字符串。
    jsonpCallback 在一个 jsonp 中规定回调函数的名称。
    password 规定在 HTTP 访问认证请求中使用的密码。
    processData 布尔值,规定通过请求发送的数据是否转换为查询字符串。默认是 true。
    scriptCharset 规定请求的字符集。
    timeout 设置本地的请求超时时间(以毫秒计)。
    traditional 布尔值,规定是否使用参数序列化的传统样式。
    username 规定在 HTTP 访问认证请求中使用的用户名。
    xhr 用于创建 XMLHttpRequest 对象的函数。

    一.ajax的四步曲 - 解决前后端交互问题

    ajax对象具有的三个属性:

    readyState //获取就绪状态码 responseText //获取服务器响应的非XML对象的数据 responseXML //获取服务器响应的XML对象 status //获取http状态码

    1.第一步:创建ajax对象

    let xhr = new XMLHttpRequest();

    2.第二步:open方法:打开接口地址,准备通信(准备给目标地址按照我们规定的请求类型发送请求)

    语法:

    xhr.open(请求类型,接口地址,是否异步)

    参1:请求类型,四种:分别对应增删改查

    get和post有什么不同:1.语义化不同;2.安全性不同,post更高;3.可传输的数据量不同,post更大;4.get的执行效率更高,是form表单的默认传输方法;5.get表单限制form表单收集的值必须为ASCII字符集,post支持整个ISO 646字符集;6.get会改变地址栏,post不会;7.get有缓存,post没有缓存;

    get //—select

    post //—insert

    put //—update

    delete //—delete

    (get、post、put 、delete)

    参2:接口地址,完整的url地址(地址里面包含数据) - https://www.nowapi.com/ 通过此网址拿到接口地址,进行测试。

    参3:是否异步,true异步,false同步

    示例:

    xhr.open(‘get’, ‘http://api.k780.com/?app=phone.get&phone=13777777777&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json‘, true);

    3.第三步:send方法:发送请求

    通过就绪状态码确认发送解析是否完成。需要用到 readyState 属性。

    ajax的属性:readyState:就绪状态码有五个状态,分别为—0(初始化) 1(请求建立) 2(发送完成) 3(解析) 4(完成)

    (0):请求初始化(还没有调用 open())。

    (1):请求已经建立,但是还没有发送(还没有调用 send())。

    (2):请求已发送,正在处理中(通常现在可以从响应中获取内容头)。

    (3):请求在处理中;通常响应中已有部分数据可用,但是服务器还没有完成响应的生成。

    (4):响应已完成;您可以获取并使用服务器的响应了 - 最关键的

    xhr.send();

    4.第四步:监听第三步,看就绪状态码是否处于完成状态,如果完成,获取服务器的响应。

    第四步xhr点后面跟的属性有以下几个:

    onreadystatechange 每当readyState 状态码改变时,就会调用该函数;

    onload 只有当readyState 状态码为4时,才执行函数

    实例:

    xhr.onreadystatechange = function() { //只要第三步的就绪状态码发送改变,事件就触发。

    1. if (xhr.readyState === 4) { //响应已完成
    2. //获取服务器响应的数据:xhr.responseText属性,返回值都是字符串格式。
    3. console.log(xhr.responseText);
    4. console.log(JSON.parse(xhr.responseText));
    5. console.log(JSON.parse(xhr.responseText).result);
    6. }
    7. }