博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ajax-原生写法步骤
阅读量:5193 次
发布时间:2019-06-13

本文共 3014 字,大约阅读时间需要 10 分钟。

1. Ajax

    :含义:简单的意思就是用一些内置的Js中的方法从后台在浏览器和服务器之间传输数据。

  :使用XMLHttpRequest发送http请求并接收响应。

  :AJAX=异步JavaScript+XML; 

  :ajax是一种无需重新加载整个网页情况下能够更新部分网页的技术。

2. 分为———六个步骤

第一步:创建该对象(注意浏览器的兼容问题)

var xhr = XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");//兼容性,前者为大部分主流浏览器,后者为IE浏览器。

第二步:创建一个新的HTTP请求,并指定改HTTP请求的方法、URL以及验证信息; 

xhr.open(method,URL,flag,name,password);
  •   method:该参数指定HTTP的请求方法,有get、post、head、put、delete。
  •   URL:该参数用于指定HTTP请求的URL地址,可以是绝对URL,也可以是相对URL。
  •   flag:可选参数,参数值为布尔型。true表示异步方式(默认)、false表示同步方式。
  •   name:可选参数,用于输入用户名。如果服务器需要验证,则必须使用该参数。
  •   password:可选参数,用于输入密码。如果服务器需要验证,则必须使用该参数。

             注意:post与get对于xhr.open()与xhr.send()的写法有所差别。

//get :
xhr.open(type, url+"需要传递的数据");xhr.send(null);
//post :
xhr.open(type, url);xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");xhr.send("需要传递的数据");

第三步: 设置响应HTTP状态变化的函数 readyState的值0,1,2,3,4;(并要求status ==200   代表数据成功传回来的状态码)

  • 0:未初始化状态。在创建完XMLHttpRequest对象时,该对象处于未初始化状态。
  • 1:初始化状态。    在创建完XMLHttpRequest对象后使用open()方法创建了HTTP请求时,该对象处于初始化状态。。
  • 2:发送数据状态。在初始化XMLHttpRequest对象后,使用send()方法发送数据时,该对象处于发送数据状。
  • 3:接收数据状态。Web服务器接收完数据并进行处理完毕之后,向客户端传送返回的结果。
  • 4:完成状态。        XMLHttpRequest对象接收数据完毕后,进入完成状态。此时接收完毕后的数据存入在客户端计算机的内存中,可以使用responseText属性或responseXml属性来获取数据。

第四步:获取异步调用返回的数据

xhttp.onreadystatechange = function(){    if(xhr.readyState==4 ){    if(xhr.status==200||(xhr.status==0){    //状态码为0是本地响应成果,200表示处理的结果是ok的 v    document.write(xhr.responseText);//使用以下语句将返回结果以字符串形式输出     //document.write(xhr.responseXML);//或者使用以下语句将返回结果以XML形式输出     }else{         alert("出错状态码:"+xhr.status+"出错信息:"+xhr.statusText);     } }
注意:如果HTML文件不是在Web服务器上运行,而是在本地运行,则xhr.status的返回值为0。

第五步:发送HTTP请求

xhr.send();//根据HTTP请求方法来确定xhe.send()中的内容

第六步:局部更新

根据第四步中的xhr.responseText或xhr.responseXML得到的数据来反馈到页面中。

3. 总结:

1 var ajax = function(param) { 2     var xhr = XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); 3     var type = (param.type || 'get').toUpperCase();//将传来的urlType转换为大写 4     var url = param.url;  5     if (!url) { 6         return  //若不存在url地址则返回,不在进行下面的操作 7     } 8     var data = param.data, //获取需要传递的参数 9         dataArr = [];  //定义一个数组10     for (var k in data) {11         dataArr.push(k + '=' + data[k]);12     }13     dataArr.push('_=' + Math.random());14     if (type == 'GET') {15         url = url + '?' + dataArr.join('&');16         xhr.open(type, url);17         xhr.send();18     } else {19            xhr.open(type, url);20            xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");21            xhr.send(dataArr.join('&'));22          }23     xhr.onload = function() {24        if (xhr.status == 200 || xhr.readyState==4) {25           var res;26           if (param.success && param.success instanceof Function) {27               res = xhr.responseText;28               if (typeof res === 'string') {29                  res = JSON.parse(res);30                  param.success.call(xhr, res);31               }32           }33        }34     };35 };

 

转载于:https://www.cnblogs.com/cjuan/p/8651019.html

你可能感兴趣的文章
Updlock 与 Holdlock
查看>>
Python 从零学起(纯基础) 笔记(一)
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
Java 线程安全问题
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
P1-13:集成日志组件 logback 2彩色日志
查看>>
昨天开始接任务
查看>>
Linux升级内核教程(CentOS7)
查看>>
JDK5.0 特性 监控与管理虚拟机
查看>>
Lintcode: Partition Array
查看>>
分享适合个人站长的5类型网站
查看>>
类别的三个作用
查看>>
【SICP练习】85 练习2.57
查看>>
runC爆严重安全漏洞,主机可被攻击!使用容器的快打补丁
查看>>
Maximum Product Subarray
查看>>
shell 默认变量
查看>>
solr相关配置翻译
查看>>
通过beego快速创建一个Restful风格API项目及API文档自动化(转)
查看>>