关于Ajax
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于Ajax,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1808字,纯文字阅读大概需要3分钟。
内容图文
Ajax是一种无需刷新页面即可从服务器端获取数据的技术,这一技术的核心是XMLHttpRequest对象。
IE7+,FireFox,Opera,Chrome和Safari都支持原生的XHR对象,所以可以直接创建
var xhr = new XMLHttpRequest();
XHR对象的用法
在使用XHR对象时,首先要调用的是open方法,需要3个参数,分别为发送请求的类型(get\post)、请求的URL、表示是否异步的布尔值,如下所示:
// get方式 xhr.open("get","example.php",true); //post方式 xhr.open("post","example.php",true);
要说明的是,open方法并不会真正发送请求,而只是启动一个请求以备发送,而且只能想同一域中使用同一协议,同一端口号的url发送请求。因此,如果是跨域请求的话,我们需要采用其他方法。
调用open方法以后,我们可以使用send方法发送请求,对于get和post两种方式,send也有不同的要求,对于get方式,send函数需要传递一个null参数,而对于post方式,需要将请求主体作为参数传递给send方法
// get方式 xhr.send(null); //post方式 xhr.send(name1=value1&name2=value2);
对于异步请求,可以通过XHR对象的readyState属性来检测请求相应过程的当前活动阶段,readyState的值每变化依次,都会触发一次readystatechange事件.
readyState的取值有以下几种:
0:表示未初始化,即还没有调用open函数
1:表示已初始化,但还没有发送,即没有调用send函数
2:已发送,即已调用send函数,但未收到响应
3:接收,表示已接收到部分数据
4:完成,表示已接收到全部数据,而且已经可以在客户端使用
我们一般检测该属性是否为4以确定服务器端是否已返回全部数据,由于readyState反映XHR对象的状态的变换,所以一定要在调用open函数前进行初始化。所以一个完整的Ajax请求的代码大概是这样的:
var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if(xhr.readyState==4){ //blablabla... } }; xhr.open("get","example.php",true); xhr.send(null);
最开始我对onreadystatechange函数中为什么使用xhr而不使用this感到不太理解,然后看书上的介绍说,由于onreadystatechange事件处理程序的作用于问题,如果使用this,在有些浏览器中会导致函数执行失败。
当服务器端成功返回数据后,响应的数据会自动填充XML对象的属性,相关的属性有:
1、responseText //作为响应主体被返回的文本
2、responseXML //如果响应为XML类型的文档,则会保存在这个属性中
3、status //响应的HTTP状态
4、statusText //响应的HTTP状态的描述
常用的主要是1和3,因此我们可以通过responseText来获取响应数据,并通过status来判断响应的状态,如是否成功返回数据(状态码一般为200),请求资源是否被修改(状态码为304表示未被修改)等
所以,在上面的readyState事件处理函数中可以根据响应的HTTP状态来分别处理
xhr.onreadystatechange = function() { if(xhr.readyState==4){ if((xhr.status>=200&&xhr.status<300)||xhr.status==304){ //成功返回数据 alert(xhr.responseText); } else { //响应错误 alert("Request was unsuccessful:"+xhr.statusText); } } }
原文:http://www.cnblogs.com/hualuyao/p/4594275.html
内容总结
以上是互联网集市为您收集整理的关于Ajax全部内容,希望文章能够帮你解决关于Ajax所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。