21.1 XMLHttpRequest 对象
21.1.1 xhr的用法
在使用xhr对象时,要调用的第一个方法是 open(), 它接受三个参数:要发送的请求的类型(get或post等),请求的url,是否异步发送请求。
例如:
xhr.open('get', 'example.php', false);
上面代码有两点需要说明下:
1、url是相对于执行代码的当前页面
2、调用open()方法并不会真正发送请求,而只是启动一个请求以备发送。
要发送特定请求,必须调用send()方法
xhr.open('get', 'example.php', false);
xhr.send(null);
send()接受一个参数,即要做为请求主体发送的数据,如果不需要发送数据,则必须传入null,因为这个参数对有些浏览器是必须的。
调用send之后,请求会被分派到服务器。
服务器响应之后,会返回内容,返回中会有一个status响应的HTTP状态,状态码:
200:成功
304:请求的资源未被修改,可直接使用浏览器中缓存。
另外,在受到服务器响应之前,还可以调用 abort() 方法来取消异步请求。
xhr.abort();
21.1.2 HTTP头部信息
默认情况下,在发送XHR请求的同时,还会发送下列头部信息:
Accept:浏览器能够处理的内容类型
Accept-Charset:浏览器能够显示的字符集
Accept-Encoding:浏览器能够处理的压缩编码
Accept-Language:浏览器当前设置的语言
Connention:浏览器与服务器之间连接的类型
Cookie:当前页面设置的任何cookie
Host:发出请求的页面所在域
Referer:发出请求的页面的url。注意,这个字段被HTTP规范写错了,正确为:referrer;
User-Agent:浏览器的用户代理字符串
使用 setRequestHeader()可以设置自定义的请求头部信息
使用 getRequestHeader('MyHeader'):可以取得传入的响应头部信息。
21.1.3 GET 请求
GET最常用于向服务器查询某些信息。必要时,可以将查询字符串参数追加到URL的末尾,以便将信息发送给服务器。
21.1.4 POST请求
通常用于向服务器发送应该被保存的数据。
21.4 跨源资源共享
Ajax跨域技术:
(1):图像 Ping
这种技术主要是用<img>标签的方法,因为一个网页可以从任何地方加载图片,而不用担心跨域。
可以通过load,error事件来响应服务器
var img = new Image();
img.onload = img.onerror = function(){
alert('done')
}
img.src = 'http://xxxxx'
更多有关Ajax跨域解决方案,请看
http://www.jianshu.com/p/a49c08bfa13f