1.XMLHttpRequest.open()
XMLHttpRequest.open() 方法初始化一个请求。该方法要从JavaScript代码使用;从原生代码初始化一个请求,使用openRequest()
替代
注意一点:为已激活的请求调用此方法(open()
或openRequest()
已被调用)相当于调用abort()
。
语法:
xhrReq.open(method, url);
xhrReq.open(method, url, async);
xhrReq.open(method, url, async, user);
xhrReq.open(method, url, async, user, password);
(1)method
要使用的HTTP方法,比如「GET」、「POST」、「PUT」、「DELETE」、等。对于非HTTP(S) URL被忽略。
(2)url
一个DOMString
表示要向其发送请求的URL。
(3)async
如果值为false
,send()
方法直到收到答复前不会返回。如果true
,已完成事务的通知可供事件监听器使用。如果multipart
属性为true
则这个必须为true
,否则将引发异常。
(4)user
可选
可选的用户名用于认证用途;默认为null
。
(5)password
可选
可选的密码用于认证用途,默认为null
。
2.XMLHttpRequest.abort()
如果该请求已被发出,XMLHttpRequest.abort() 方法将终止该请求。当一个请求被终止,它的 readyState 属性将被置为0( UNSENT
)。
语法:
xhrInstance.abort();
位置:
var xhr = new XMLHttpRequest(),
method = "GET",
url = "https://developer.mozilla.org/";
xhr.open(method,url,true);
xhr.send();
xhr.abort();
3.XMLHttpRequest.setRequestHeader()
1.位置
XMLHttpRequest.setRequestHeader() 是设置HTTP请求头部的方法。此方法必须在 open()
方法和 send()
之间调用。如果多次对同一个请求头赋值,只会生成一个合并了多个值的请求头。
如果没有设置 Accept
属性,则此发送出send()
的值为此属性的默认值*/*
。
安全起见,有些请求头的值只能由user agent设置:forbidden header names和forbidden response header names.
自定义一些header属性进行跨域请求时,可能会遇到"not allowed by Access-Control-Allow-Headers in preflight response",你可能需要在你的服务端设置"Access-Control-Allow-Headers"。(即不能使用跨域头请求。ajax是不能进行设置跨域头部的设置!!!)
2.语法
myReq.setRequestHeader(header, value);
header
属性的名称。
value
属性的值。
4.XMLHttpRequest.getAllResponseHeaders()
XMLHttpRequest.getAllResponseHeaders() 方法返回所有的响应头,以 CRLF 分割的字符串,或者 null
如果没有收到任何响应。 注意: 对于复合请求 ( multipart requests ),这个方法返回当前请求的头部,而不是最初的请求的头部。
语法:
var headers = XMLHttpRequest.getAllResponseHeaders();
位置:
在send()之后
5.XMLHttpRequest.getResponseHeader()
XMLHttpRequest.getResponseHeader() 方法返回包含指定头文本的字符串。
如果在返回头中有多个一样的名称,那么返回的值就会是用逗号和空格将值分隔的字符串。getResponseHeader()方法以UTF字节序列的形式返回值。搜索标题名称是不区分大小写的。
语法:
var myHeader = getResponseHeader(name);
参数
名称
ByteString表示要返回文本值的标题的名称。
返回值
表示标头文本值的ByteString;如果响应尚未收到,或者响应中不存在标头,则返回null。
位置:
var client = new XMLHttpRequest();
client.open("GET", "unicorns-are-teh-awesome.txt", true);
client.send();
client.onreadystatechange = function() {
if(this.readyState == this.HEADERS_RECEIVED) {
console.log(client.getResponseHeader("Content-Type"));
}
}
是在send() 之后。
6.XMLHttpRequest.overrideMimeType()
XMLHttpRequest 的 overrideMimeType
方法是指定一个MIME类型用于替代服务器指定的类型,使服务端响应信息中传输的数据按照该指定MIME类型处理。例如强制使流方式处理为"text/xml"类型处理时会被使用到,即使服务器在响应头中并没有这样指定。此方法必须在send方法之前调用方为有效。
语法:
XMLHttpRequest.overrideMimeType(mimeType)
Parameters
mimeType
一个 DOMString
指定具体的MIME类型去代替有服务器指定的MIME类型. 如果服务器没有指定类型,那么 XMLHttpRequest
将会默认为 "text/xml"
.
Return value
undefined
.
位置:
req = new XMLHttpRequest();
req.overrideMimeType("text/plain");
req.addEventListener("load", callback, false);
req.open("get", url);
req.send();
7.XMLHttpRequest.send()
该XMLHttpRequest
方法send()
将请求发送到服务器。如果请求是异步的(默认设置),则此方法将在发送请求并使用事件传递结果后立即返回。如果请求是同步的,则在响应到达之前该方法不会返回。
send()
接受一个可选参数,该参数可让您指定请求的正文;这主要用于诸如之类的请求PUT
。如果request方法为GET
or HEAD
,则将body
忽略参数并将请求正文设置为null
。
如果没有Accept
使用设置头,则发送具有类型(任何类型)setRequestHeader()
的Accept
头"*/*"
。
语法:
XMLHttpRequest.send(body)
XMLHttpRequest.send();
XMLHttpRequest.send(ArrayBuffer data);
XMLHttpRequest.send(ArrayBufferView data);
XMLHttpRequest.send(Blob data);
XMLHttpRequest.send(Document data);
XMLHttpRequest.send(DOMString? data);
XMLHttpRequest.send(FormData data);
var xhr = new XMLHttpRequest();
xhr.open("POST", '/server', true);
//发送合适的请求头信息
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onload = function () {
// 请求结束后,在此处写处理代码
};
xhr.send("foo=bar&lorem=ipsum");
// xhr.send('string');
// xhr.send(new Blob());
// xhr.send(new Int8Array());
// xhr.send({ form: 'data' });
// xhr.send(document);