史上最全的Ajax基础详解
一、同步请求和异步请求同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。 同步请求:客户端请求(等待)->服务端处理->响应->页面载入 (缺少对象:XMLhttpRequest)这时候如果有错误,只能再次发送请求,再次等待。 异步请求:比如当你填写邮箱地址的时候,页面当时就把邮箱地址发送到了服务器(也就是页面发送了一个请求),服务器做处理和响应,得到你的邮箱地址填写重复了,把响应结果发给页面,在这个过程中你仍然可以填写其他内容,这时候服务器会提示你有重复的邮箱地址,在页面上的表现只是邮箱地址旁别加了一行字或者把整个文本框标红,并没有重新刷你的页面,所有的填写错误会实时的显示出来,你也会实时的更正。这个过程中,你会有整个页面的刷新,也不会有整个页面的提交和等待,最后提交,一切都会搞定的. 二、HTTP是计算机通过网络进行通信的规则1 作用:客户端向服务端发送请求信息和服务客户端:自己的计算机的浏览器(web浏览器) 服务端:服务器,一台高性能的计算机,作为存储,处理网络上的数据,信息(web服务器) 2 特点:是一种无状态的协议(不建立持久的连接,服务端不保留连接的信息)3 一个完整的HTTP请求过程的七个步骤:
4 HTTP请求的四部分组成
5 HTTP请求方法GET
POST
6 HTTP响应一般由三部分组成
7 HTTP状态码100:信息类,表示web浏览器请求,正在进一步的处理中 Ajax基础一、什么是AjaxAJAX即“Asynchronous Javascript And XML”( 异步 JavaScript和XML), AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。 它是一套综合了多项技术的浏览器端网页开发技术。 这些技术包括Javascript、XHTML和CSS、DOM、XML和XMLHttpRequest. 二、Ajax原理运用HTML和css来实现页面,表达信息,通过浏览器的XmlHttpRequest(Ajax引擎)对象来向服务器(发送异步请求)并(接收服务器)的响应数据,然后用javascript来操作DOM,实现动态局部刷新。 三、Ajax实现过程第一步:Javascript监听浏览器网页事件(点击,提交,更改等) 第二步:由javascript创建Ajax引擎对象 第三步:通过Ajax引擎对象发出请求 第四步:Ajax引擎等待并且接受服务器的响应内容 1.创建Ajax引擎对象 就是XMLHtttpRequest对象,所有现代浏览器均支持XMLHttpRequest对象 (IE5 和 IE6 使用 ActiveXObject)它同时也是一个Javascript对象. var xhr = null; if (window.XMLHttpRequest) { //所有现代浏览器(IE7+.Firefox.Chrome.Safari以及opera) xhr = new XMLHttpRequest; }else{ //老版本的Internet Explorer使用ActiveX对象 xhr = new ActiveXObject("Microsoft.XMLHttp"); } 2.配置请求对象的信息 3.发送请求 xhr.send([post请求参数字符串]); 发送请求分为两种情况:
4.监听Ajax引擎对象的改变(是否正确做出了响应) xmlHttpRequest.onreadystatechange = function(){ if (xmlHttpRequest.readyState== 4 && xmlHttpRequest==200) {} } 4.1 详解onreadystatechange 根据响应内容使用javascript改变当前页面的部分html代码,从而达到不刷新改变局部html代码. 其他方法:
其他属性:
4.2 详解Ajax引擎的状态属性 readyState(0 1 2 3 4) 0.请求未初始化 当Ajax引擎的状态属性为readyState为4时,说明服务器的响应已经发送给Ajax请求了. 但是响应的状态吗为200时:说明响应的内容是正确的,这时才会根据相应内容对当前页面的html处理。 四、为什么使用Ajax?优点:
缺点:
示例1.使用原生JavaScript实现: var xhr; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else { xhr = new ActiveXObject("microsoft.XMLHTTP"); } xhr.open('GET','action',true); xhr.onreadystatechange = function(){ if (xhr.readyState== 4 && xhr.status==200) { alert(responseText); } } xhr.send(null); 2.使用原生jquery: $("#username").on("blur",function(){ var $this = $(this); $.ajax({ url:"user_validateUsername?",type:"get",data:"username=" + $("#username").val() dataType:"text",success:function(result){ alert(result); } }) }); 3.使用Jquery的form表单验证框架:引入jquery.form.js //提交表单时使用ajax校验用户名 var options = { url:"user_validateUsername?username=" + $("#username").val(),target:"#username-error" }; $("#form").ajaxForm(options); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |