HtttpRequest对象是Ajax的核心,它有许多的属性、方法和事件以便于脚本处理和控制HTTP的请求与相应,下面苏州网站制作主要讲述一下open() 和send()方法。
XMLHttpRequets对象是通过调用open(method,uri,async,username,password)方法来进行初始化工作的。调用该方法得到一个可以用来进行发行(send()方法)的对象。Open()方法有5个参数。
(1)method参数是必须提供的,用于指定用来发送请求的HTTP方法(GET,POST,PUT,DELETE或HEAD)。按照HTTP规范,该参数要大写。
(2)uri参数用于指定XMLHttpRequest对象把请求发送到的服务器响应的URL,该地址会被自动解析位绝对地址。
(3)async参数用于指定是否请求是异步的,其默认值是TRUE。如果需要发送一个同步请求,需要把该参数设置为false。
(4)如果需要服务器验证访问用户的情况,那么可以设置username以及password这两个参数。
调用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的头部信息。