对于一个简单的Ajax开发技术简单来分有以下几部分:
1.XMLHttpRequest对象创建 简单的对象创建方法:
var xmlHttp; if(window.XMLHttpRequest){ xmlHttp=new XMLHttpRequest(); //一般现在的浏览器都支持带有XMLHttpRequest }else{ xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");//老版本的浏览器 }
2.XMLHttpRequest对象请求后台 open(method,url,async) 规定请求的类型、URL以及是否异步处理请求。 method:请求的类型;GET或 POST url:文件在服务器上的位置 async:true(异步)或false(同步) send(string) 将请求发送到服务器。 string:仅用于POST 请求 GET还是 POST? 与POST 相比,GET更简单也更快,并且在大部分情况下都能用。 然而,在以下情况中,请使用POST 请求: 无法使用缓存文件(更新服务器上的文件或数据库) 向服务器发送大量数据(POST没有数据量限制) 发送包含未知字符的用户输入时,POST比 GET 更稳定也更可靠 setRequestHeader(header,value) 向请求添加HTTP 头。 header:规定头的名称 value:规定头的值 xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 异步- True 或 False? AJAX指的是异步 JavaScript 和 XML(Asynchronous JavaScript and XML) 。 为True 的话,表示的是异步,异步表示程序请求服务器的同时,程序可以继续执行;能提高系统的运行效率; 为False 的话,表示同步,JavaScript会等到服务器响应就绪才继续执行。如果服务器繁忙或缓慢,应用程序会 挂起或停止。 我们一般都是用True
例子:
(1)get方式:
xmlHttp.open("get", "getAjaxName?name=jack&age=11", true);
xmlHttp.send();
(2)post方式:
xmlHttp.open("post", "getAjaxName", true); xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlHttp.send("name=jack&age=11");
3:XMLHttpRequest对象响应服务器
onreadystatechange事件 当请求被发送到服务器时,我们需要执行一些基于响应的任务。 每当readyState 改变时,就会触发 onreadystatechange 事件。 readyState属性存有 XMLHttpRequest 的状态信息。 下面是XMLHttpRequest 对象的三个重要的属性: onreadystatechange存储函数(或函数名) ,每当readyState 属性改变时,就会调用该函数。 readyState 存有XMLHttpRequest 的状态。从 0 到 4 发生变化。 0:请求未初始化 1:服务器连接已建立 2:请求已接收 3:请求处理中 4:请求已完成,且响应已就绪 status 200: "OK" 404:未找到页面 在onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。 如需获得来自服务器的响应,请使用XMLHttpRequest 对象的 responseText 或 responseXML 属性。 属性 描述 responseText获得字符串形式的响应数据。 responseXML获得 XML 形式的响应数据。 (了解即可)
具体代码应用与实现:
xmlHttp.onreadystatechange=function(){ alert("readState状态:"+xmlHttp.readyState+";status状态:"+xmlHttp.status); if(xmlHttp.readyState==4 && xmlHttp.status==200){ alert(xmlHttp.responseText); document.getElementById("name").value=xmlHttp.responseText;//将数据返回到文本框中 } };