调用opend()方法后,就可以通过调用send()方法按照open()方法设定的参数将请求进行发送。当open()方法中async参数为true时,在send()方法调用后立即返回,否则将会终端直到请求返回。需要注意的是,send()方法必须在readyState属性值为1时,即调用open()方法以后才可能调用。在调用send()方法以后到接受到响应信息之前,readyState属性的值将被设置为2;一旦接收到响应信息,readyState属性值将会被设为3;知道响应接收完成,readyState属性的值才会被设为4。
Send()方法使用一个可选的参数,该参数可以包含可变类型的数据。用户可以使用它并通过POST方法把数据发送到服务器。另外,可以显式地使用null参数调用send()方法,这与不同参数调用该方法一样。对于大多数其他的参数类型,再调用send()方法之前,应该使用setRequestHeader()方法先设置Content-Type头部。如果send(data)方法中的data参数的类型为DOMString,那么,数据将被编译为UTF-8。如果数据是Document类型,那么将使用由data.xmlEncoding指定的编码串行化该数据。setRequestHeader()方法是用来设置请求的头部信息。当readyState属性值为1时,可以再调用open()方法后调用这个方法;否则将得到一个异常。SetRequestHeader(header,value)方法包含两个参数:前一个是header键名称,后一个是键值。getRequestHeader()方法用于检索响应的头部值,仅当readState属性值是3或4(即在响应头部可用后)时,才可以调用这个方法;否从,该方法返回一个空字符串。此处还可以通过getAllRequestHeaders()方法获取所有的HttpRequest的头部信息。XMLHttpRequets对象是通过调用open(method,uri,async,username,password)方法来进行初始化工作的。调用该方法得到一个可以用来进行发行(send()方法)的对象。Open()方法有5个参数。
(1)method参数是必须提供的,用于指定用来发送请求的HTTP方法(GET,POST,PUT,DELETE或HEAD)。按照HTTP规范,该参数要大写。var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("GET","http://localhost/books.xml", false);
xmlhttp.send();
var book = xmlhttp.responseXML.selectSingleNode("//book[@id=''bk101'']");
alert(book.xml);