创建XMLHttpRequest对象的一个实例(只需要检测浏览器是否支持ActiveX控件)
var xmlHttp;
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
}
else if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}
XMLHttpRequest不能请求脚本所在域之外的资源
XMLHttpRequest将请求发送给服务器
XMLHttpRequest对象的send()方法把请求发送到指定的目标资源。send()方法接受一个参数,通常是一个串或一个DOM对象。这个参数作为请求体的一部分发送到目标URL。当向send()方法提供参数时,要确保open()中指定的方法是POST。
如果没有数据作为请求体的一部分被发送,则使用null。
一般情况下,使用Ajax提交的参数多是些简单的字符串,可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null。
例如 :
var url = "login.jsp?user=XXX&pwd=XXX";
xmlHttpRequest.open("GET",url,true);
xmlHttpRequset.send(null);
此外,也可以使用send方法传递参数。使用send方法传递参数使用的是POST方法,需要设定Content-Type头信息,模拟HTTP POST方法发送一个表单,这样服务器才会知道如何处理上传的内容。参数的提交格式和GET方法中url的写法一样。设置头信息前必须先调用open方法。
例如:
xmlHttpRequest.open("POST","login.jsp",true);
xmlHttpRequest.setRequestHeder("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
xmlHttpRequest.send("user="+username+"&pwd="+password);
需要注意的是根据提交方式的不同,两种提交方式分别调用后台的doGet方法和doPost方法。
在请求URL时加上时间戳的好处:
在有些情况下某些浏览器会把XMLHttpRequest请求的结果缓存在同一个URL上.但是实际上虽然对相同URL的请求在不同时间也会有不同的结果.当把时间戳追加到URL的最后,就能够确保URL的唯一性,从而避免浏览器缓存结果.
利用XMLHttpRequest的post方法可以在请求体中发送各种内容(XML,二进制数据)
使用JSON来传输数据.JSON是一种文本格式,独立于具体语言,可以将数据结构进行序列化.
最佳实践
:在客户端编写的每一个验证例程都必须在服务器上以某种方式重写,因为用户可能禁用javascript.
读取相应头部
某些情况下我们只想读取服务器发出的响应首部,而忽略内容。,完成这样一个请求的标准做法是使用HEAD请求,而不是前面讨论的GET或POST请求。当服务器对HEAD请求做出响应时,它只发送响应首部而忽略内容,即使可以向浏览器返回所请求的内容,也不会真的把内容返回。由于忽略了内容,对HEAD请求的响应比对GET或POST的响应就小得多。
通过读取响应首部,可以得出Content-Type(内容类型)、Content-Length
(内容长度),甚至Last-Modified(最后一次修改)的日期。
实现方式:在Open的第一个参数设定为"HEAD".xmlHttp.open("HEAD",url,true);
getAllResponseHeaders()方法的用途很有限,因为它把所有响应首部放在一起作为串返回。要想使用getAllResponseHeaders()方法来获取单个的响应首部,就需要解析返回的串,查找所关注的响应首部。
getResponseHeader方法可以通过只返回一个响应首部的值解决这个问题。这个方
法取一个串参数,该参数表示所需响应首部的名字(就是你想得到这个响应首部
的值)。
火狐工具
HTML Validator 查找并标志出HTML页面上的错误
webdeveloper
Greasemonkey
Venkman
其他工具
JSLint(网页) 完成JavaScript语法检查
JSUnit(javascript单元测试) 用于测试JavaScript。
AJAX框架
qooxdoo,jQuery,Mootools,Dojo,Ext JS
No1—Prototype
No2—Dojo
No3—Mootools
No4—JQuery
No5—Dwr
No6—Buffalo
No7—Yui
No8—Ext
No9—Qooxdoo
No10—Spry