Ajax:是一种异步请求的技术,主要是javascript里面的 XMLHttpRequest对象的使用。其全称为Asynchronous Javascript And Xml。名为:异步java脚本和可扩展标记语言。这里面拉了xml进来。原因在于当时xml作为数据传递最火的方式,javascript利用各种方式让自己变得流行。渐渐地出现了一种新的数据传输格式的载体json。这时候这个异步传输就基本可以换一个名字了叫做:ajaj,我起的名字【笑哭。】
先来简单复习:
异步请求指的是:在不影响用户操作的情况下,可以向服务器发送请求,同时可以接收服务器的响应。
Ajax的组成部分有:javascript html css xml dom 其最重要的组成部分是XMLHttpRequest对象。
异步请求的步骤:
1、创建异步请求的对象, new XMLHttpRequest()
2、基于当前已经创建的异步请求对象,打开连接:
open(method,url,asynchronous,username,password);后面这个两个参数就是问号传值,可以得到的【没有实现,问了一下老师,老师是这么说的,真伪没有验证。】
3、设置回调函数,用来处理当前异步请求得到的服务器的反馈。【可以使用匿名函数】
4、发送请求,有内容,就发对应的内容比如input标签体,或者xmlstring,或者等等内容,如果没有的话,就放一个null,来标识发送当前请求。当请求方式为get时,搞表单就是搞不出来。
5、创建回调函数,在回调函数中,处理服务器响应回来的信息。首先要判断一下异步请求的状态,只有当请求的状态是4也就是异步交互完成的时候。并且http协议为200的时候,采取对响应进行处理。
在响应过程中可以携带数据。
get:url地址传值方式,或者 请求头方式传递参数。这种状况下,不能通过表单方式传递数据
1、xmlHttpRequest.open("get", "TestServlet.do?username="+username, true);
2、xmlHttpRequest.setRequestHeader("name", name);
post:url地址传值方式,请求头方式传递信息,或者通过将请求头设置为
1、xmlHttpRequest.open("post", "TestServlet3.do?name="+name, true);
2、xmlHttpRequest.setRequestHeader("age", age);
3、xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
且:xmlHttpRequest.send("email="+email+"&age=23&name=lifei");
前面说到了ajax命名的来源。如果不用这几种方式或者传递较多信息时,就采用xml的方式传递信息此时要将请求头信息设置为: setRequestHeader("Content-Type","text/xml");
然后在发送请求时:发送:send(xmlString).
在控制层利用request.getReader();来得到一组数据。这个里面得到的是send里面发送的东西,并不含有其他的什么东西。
刚刚完成了xml的传递与解析。
其实异步请求的时候不仅可以请求服务器的动态数据,也可以请求在服务器端的静态内容也就是xml文件。二级联动的通过省份点击获得对应市的菜单就是这样一个例子。
开头我们说了,xml已经过了气了,这个时候对于异步传输来说,有一种更加火爆的方式,json学名为:JavaScript Object Notation,汉语对应学名为:java脚本 对象 符号。
Json之所以火爆是因为:
1、轻量级的数据交换格式
2、读写更加容易
3、易于机器的解析和生成【主要是速度上】
4、能够通过JavaScript中的eval()函数解析JSON
5、Json支持多种语言。包括:ActionScript,C,C#,ColdFusion,E,Java,Javascript,ML,objective CAML,Perl,PHP,Python,Rebol,Ruby,Lua等等。