你的浏览器不支持canvas

Enjoy life!

Ajax - 下篇

Date: Author: JM

本文章采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。

一、 如何使用XMLHttpRequest

1.1 设置请求头(Request Header)

  • xhr.setRequestHeader(key,value):设置自定义的请求头部信息。
    • 接受两个参数:
      • key:头部字段的名称
      • value:头部字段的值
  • 要成功发送请求头部信息,必须在调用 open()方法之后且调用 send()方法之前调用 setRequestHeader()
  • setRequestHeader 可以调用多次,最终的值不会采用覆盖 override 的方式,而是采用追加 append 的方式。
//...
xhr.open("get", "example.php", true);
xhr.setRequestHeader("MyHeader", "MyValue1");
xhr.setRequestHeader("MyHeader", "MyValue2");
// 最终request header中"MyHeader"为: MyValue1, MyValue2

xhr.send(null); 

1.2 获取请求头(Request Header)

  • xhr.getResponseHeader(name):获取某个指定 header 字段的值。
    • 接受一个参数:name - 头部字段名称。
var myHeader = xhr.getResponseHeader("MyHeader");

  • xhr.getAllResponseHeaders():获取 response 中的所有 header 字段。
var allHeaders = xhr.getAllResponseHeaders(); 
  • 返回如下所示的多行文本内容:
Date: Sun, 14 Nov 2004 18:04:03 GMT
Server: Apache/1.3.29 (Unix)
Vary: Accept
X-Powered-By: PHP/4.3.8
Connection: close
Content-Type: text/html; charset=iso-8859-1

relation-map

1.3 xhr.overrideMimeType()

  • xhr.overrideMimeType(mime):重写 XHR 响应的 MIME 类型。
    • 调用 overrideMimeType()必须在send()方法之前,才能保证重写响应的 MIME 类型。
    • 支持 overrideMimeType()方法的浏览器有 FirefoxSafari 4+Opera 10.5Chrome
  • 例:
    • 服务器返回的 MIME 类型是 text/plain,但数据中实际包含的是 XML
    • 根据 MIME 类型,即使数据是 XMLresponseXML 属性中仍然是 null
    • 通过调用 overrideMimeType()方法,可以保证把响应当作 XML 而非纯文本来处理。
      var xhr = new XMLHttpRequest();
      xhr.open("get", "text.php", true);
      xhr.overrideMimeType("text/xml");
      xhr.send(null); 
    

对于本文内容有问题或建议的小伙伴,欢迎在文章底部留言交流讨论。