说说Ajax

作者: betterwlf | 来源:发表于2016-08-04 22:53 被阅读129次

AJAX全称为Asynchronous JavaScript and XML(异步的JavaScript和XML),这一技术能够向服务器请求额外的数据而无需写在整个页面,会带来良好的用户体验。

XMLHttpRequest
Ajax的核心是JavaScript对象XMLHttpRequest,这个对象为向服务器发送请求和解析服务器相应提供了流畅的接口。XmlHttpRequest可以使用JavaScript向服务器提出请求并处理响应。(使用过程中要注意XMLHttpRequest的兼容性)。

<pre>
//IE6以上
var oAjax=new XMLHttpRequest();
//IE 6
var oAjax=new ActiveXObject("Microsoft.XMLHTTP")
</pre>

XHR对象有两个重要的方法open和send

方法 描述
open(method,url,async) 规定请求的类型、URL以及是否异步处理请求
send(string) 将请求发送到服务器 。string:仅用于POST请求

知道了这些,这两个方法到底怎么使用呢,下面我们举个例子说明下
<pre>
<fieldset>
<legend>简单的GET</legend>
<div id="myDiv1">< h2 >我的名字</ h2 ></div>
<button id="btn1">修改内容</button>
<script>
document.getElementById("btn1").addEventListener('click', function(){
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("myDiv1").innerHTML=xmlhttp.responseText;
console.log("333");
}
console.log("222");
}
xmlhttp.open("GET","ajax_simple.php",true);
xmlhttp.send();
console.log("111");
});
</script>
</fieldset>
</pre>
以上代码中,用到了XMLHttpRequest对象的三个重要属性:
onreadystatechange:存储函数(或函数名),每当readyState属性改变时,会调该函数。
readyState:XMLHttpRequest的状态。从0到4发生变化。
0:请求为初始化;
1:服务器连接已建立;
2:请求已接收;
3:请求处理中;
4.请求已完成,且响应就绪

status:
200:"ok"
404:未找到页面

说到这里我们不得不提一点,那就是ajax的同步和异步有什么区别呢?各自都有什么特点呢?
ajax同步请求:
<code>发送请求-->等待结果-->操作结果-->继续执行后面的代码</code>这是同步请求的大致过程,也就是说同步的链接在同一时刻只会有一个,并且会阻止后续JS代码的执行,JS必须等待同步链接加载完毕后才能继续执行。

ajax异步请求:
<code>发送请求-->继续执行后面的代码-->响应结-->操作结果果接受完毕</code>
异步加载,每次只刷新需要更换部分的内容。

异步加载的优点在于:
1.浏览器可以从服务器同时请求多项内容;
2.浏览器请求返回的速度回快得多;
3.只有页面真正改变的部分得到更新;
4.能够减少服务器流量。

那么GET和POST请求又有什么区别呢?
GET请求是最常见的请求类型,用于向服务器查询信息,必要时可以将查询字符串参数放在URL尾部发送给服务器,如果参数有特殊字符必须正确编码。
POST请求用于把数据作为主体向服务器提交,POST请求主体可以包含多种格式数据,在open方法第一个初始化参数传入“POST”就可以初始化一个POST请求。

版权归王丽峰和饥人谷所有,如有转载,请注明来源

相关文章

  • 说说AJAX

    之前讲了讲JSONP,主要就是发请求的问题。本文会慢慢说明啥是AJAX,然后自己实现一个AJAX,同时介绍下Pro...

  • 说说Ajax

    AJAX全称为Asynchronous JavaScript and XML(异步的JavaScript和XML)...

  • 使用Ajax与服务端进行数据的交互(附案例)

    先来说说Ajax是什么。官方解释:Ajax,是Asynchronous JavaScript + XML的简写。这...

  • ajax的封装

    AJAX 想必大家对AJAX并不陌生吧! 首先说说什么是AJAX,所谓的AJAX就是一种网页异步更新技术。也就是说...

  • 交互那些事(二)

    说完ajax我想必须说说jsonp了,谈到jsonp就必须先说说跨域,首先ajax是不能跨域的,除非后台允许跨域或...

  • 2021-01-28

    5、说说你用过那些AJAX技术和框架,说说它们的区别? jQuery是一个轻量级的JavaScript库,兼容CS...

  • 跨域jsonp

    【原创】说说JSON和JSONP,也许你会豁然开朗,含jQuery用例 imooc---ajax全接触---处理跨...

  • Ajax的使用以及跨域(上)

    Ajax相信大家都听说过,接下来这几篇文章就来说说关于Ajax的一些知识,从而也顺道引出来在实际工作过程中经常使用...

  • Ajax的使用以及跨域(上)

    Ajax相信大家都听说过,接下来这几篇文章就来说说关于Ajax的一些知识,从而也顺道引出来在实际工作过程中经常使用...

  • 说说axios、ajax、fetch的关系

    axios 和 ajax 都是对XMLHttpRequest这个对象的封装;而 fetch 则是window下的一...

网友评论

    本文标题:说说Ajax

    本文链接:https://www.haomeiwen.com/subject/lpfhsttx.html