Ajax基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ajax基础相关的知识,希望对你有一定的参考价值。

Ajax基础

Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。原生创建ajax可分为以下四步

技术图片

1.创建XMLHttpRequest对象

现代浏览器中创建一个XMLHttpRequest对象

var xhr = new XMLHttpRequest();

2.准备请求

初始化上一步创建好的对象,这里可以接受三个参数,如下

xhr.open(method,url,async);

第一个参数表示请求类型,GET或者POST。
第二个参数表示目标ur
第三个参数true代表异步模式请求;false代表同步模式,不建议使用;
异步模式下如果网络阻塞或响应不及时等,均会阻塞在这里等待 出现页面挂起的情况

//GET请求
xhr.open("GET",demo.php?name=tsrot&age=24,true);

//POST请求
xhr.open("POST",demo.php,true);

3.发送请求

一般情况下,使用Ajax提交的参数多是些简单的字符串,可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null或为空。

GET请求

xhr.open("GET",demo.php?name=tsrot&age=24,true); 
xhr.send(null);

POST请求

xhr.open("POST",demo.php,true); 
xhr.setRequestHeder("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
xhr.send()

4.处理请求

xhr.onreadystatechange = function(){
    if(xhr.readyState == 4 && xhr.status == 200){
        console.log(xhr.responseText); 
      }
}

onreadystatechange?:当处理过程发生变化的时候执行下面的函数
readyState?:ajax处理过程0:请求未初始化(还没有调用?open())。
1:请求已经建立,但是还没有发送(还没有调用?send())。
2:请求已发送,正在处理中(通常现在可以从响应中获取内容头)。
3:请求在处理中;通常响应中已有部分数据可用了,但是服务器还没有完成响应的生成。
4:响应已完成;您可以获取并使用服务器的响应了。

responseText:获得字符串形式的响应数据responseXML:获得?XML形式的响应数据返回值一般为json字符串,可以用JSON.parse(xhr.responseText)转化为JSON对象

5.样例

var xhr = false; 
if( XMLHttpRequest){ 
    xhr = new XMLHttpRequest();
    }
else{ 
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
if(xhr) {
    //如果xhr创建失败,还是原来的false 
    xhr.open("GET","./data.json",true); 
    xhr.send(); 
    xhr.onreadystatechange = function(){ 
        if(xhr.readyState == 4 && xhr.status == 200){                                                          console.log(JSON.parse(xhr.responseText).name);
          }
      }
}

以上是关于Ajax基础的主要内容,如果未能解决你的问题,请参考以下文章

AJAX相关JS代码片段和部分浏览器模型

Javascript代码片段在drupal中不起作用

前端面试题之手写promise

Ajax 片段元标记 - Googlebot 未读取页面内容

执行AJAX返回HTML片段中的JavaScript脚本

[vscode]--HTML代码片段(基础版,reactvuejquery)