1.FormData
XMLHttpRequest2级为表单数据序列化提供了FormData类型。
var data = new FormData();
data.append("name","value");
以上代码创建一个FormData对象,并添加了一些数据。而通过向FormData构造函数中传入表单元素,也可以用表单元素的数据与现象其中填入键值对:
var data = new FormData(document.forms[0]);
创建了FormData的实例之后,可以将它直接传给XHR的send()方法:
xhr.send(data);
2.超时设定
XMLHttpRequest2级给XHR对象添加了一个timeout属性,表示请求在等待响应后多少毫秒之后就终止。当给timeout设置一个数值之后,如果在规定时间内浏览器还没有收到响应,则会触发timeout事件,进而会调用ontimeout事件处理程序:
xhr.open("get","example.php",false);
xhr.setRequestHeader("myHeader","myHeaderValue");
xhr.timeout = 1000 ;
xhr.ontimeout = function(){
//...
}
xhr.send(null);
3.overrideMimeType()方法
用于重写XHR响应的MIME类型。假设服务器返回的MIME类型是text/plain,但数据中实际包含的是XML。根据MIME类型,即使数据是XML,但responseXML属性中仍是null。此时通过调用overrideMimeType()方法,可以保证吧响应作为XML而非纯文本来处理:
xhr.open("get","example.php",true);
xhr.overrideMimeType("text/xml");
xhr.send(null);
必须在调用send()方法之前调用overrideMimeType()方法。