细说Ajax

闲话日常

在日常的项目使用中,关于AJAX,更多的是对整体的CtrlC+CtrlV,然后进行部分参数的更改,然后去操作success函数即可,然而,目前的要求已经不仅仅局限于使用了,更多的是知识的理解程度和模块化。这篇文章主要针对自身对ajax的学习和理解,做一个总结,以及对代码的一个封装。

啥是AJAX

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。什么意思呢,也就是说不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容,也是他最大的优势所在,而且ajax不是新的编程语言,而是一种使用现有标准的新方法。也可以说ajax是一种创建快速动态网页的技术。

咋用了

AJAX的工作原理按照口头的话来总结,也就是说:在客户端(Broswer)创建XMLHttpRequest对象,通过地址、数据、请求方式等参数配合发送请求(HttpRequest);而Server服务端对请求进行处理,创建一个Response,并且向客户端返回数据;然后在客户端进行数据的处理,进而去更新页面的内容。如图所示:

创建XMLHttpRequest对象

创建XMLHttpRequest对象,现在的浏览器均支持 XMLHttpRequest 对象。XMLHttpRequest 用于在后台与服务器交换数据。而在IE5 和 IE6 中使用 ActiveXObject来进行。

创建 XMLHttpRequest 对象的语法:

variable=new XMLHttpRequest();

老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:

variable=new ActiveXObject("Microsoft.XMLHTTP");

为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject :

var xmlhttp;
if (window.XMLHttpRequest)
{
    //  新版本浏览器
    xmlhttp=new XMLHttpRequest();
}else{
    // IE6,IE5等旧版本浏览器
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

 向服务器发送请求

XMLHttpRequest对象用于和服务器交换数据,如果需要将请求发送到服务器,我们需要使用 XMLHttpRequest 对象的 open() 和 send() 方法,下面介绍一下两个方法:

open():

open(method,url,async),用于规定请求的类型、URL 以及是否异步处理请求。

method:表示请求的类型,get或post方法等。

url:文件在服务器的位置,请求的连接(接口)。

async:通过布尔值表示是否同步。(true:异步,false:同步)

send() :

send(string),将请求发送到服务器。

string:仅用于post请求。

下面分别说一下open的几个参数:

method:

get:大部分情况下均能够使用,而且更加简单快捷。

post:保密性较好,需要发送大量数据时建议使用。

url:

open() 方法的 url 参数是服务器上文件的地址(没太理解清楚,求大佬指点,只能比着搜索结果粘下来了)

async:

当使用 async=true 时,请规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数:

xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        //操作
    }
}
xmlhttp.open("GET","URL",true);
xmlhttp.send();

不推荐使用false,除非是特别小的请求,因为使用false(同步)的话,JavaScript 会等到服务器响应就绪才继续执行。如果服务器繁忙或缓慢,应用程序会挂起或停止。

服务器的响应

要想获得来自服务器的响应,就得使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性,看名字就能知道意思, responseText 就是说获得字符串形式的响应数据,而 responseXML 指获得 XML 形式的响应数据。如果来自服务器的响应并非 XML,请使用 responseText 属性,如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,请使用 responseXML 属性。

xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
{
    txt=txt + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("myDiv").innerHTML=txt;

readystate

当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件,readyState 属性存有 XMLHttpRequest 的状态信息。下面是 XMLHttpRequest 对象的三个重要的属性:

onreadystatechange:

存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。

readyState​​​​​​:

存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

1、请求未初始化

2、服务器连接已建立

3、请求已接收

4、 请求处理中

5、请求已完成,且响应已就绪

status:

200: "OK"

404: 未找到页面

在readyState的值发生改变时,就会触发onreadystatechange函数,一般情况下会在函数内部去做判断,当readyState的值为4,且status的值为200时表示响应已就绪。

xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        //一系列操作
    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ღ故里᭄ꦿ࿐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值