1. 数据传输
Ajax,从最基本的层面来说,是一种与服务器通信而无需重载页面的方法;数据可以从服务器获取或发送给服务器。
(1) 请求数据
(一)XMLHttpRequest(XHR)
(二)Dynamic script tag insertion 动态脚本注入
(三)iframes(极端情况下使用,这里不做讨论)
(四)Comet(极端情况下使用,这里不做讨论)
(五)Multipart XHR
一、XMLHttpRequest
当使用XHR时,post和get方式的选择:
对于那些不会改变服务器状态,只会获取数据的请求,应该使用GET。经过get请求的数据会被缓存起来,如果需要多次请求同一数据的话,它会有助于提升性能。
只有当请求的URL加上参数的长度接近或超过2048个字符时,才应该用post获取数据。这是因为IE限制URL长度,过长将会导致请求的url被截断。
二、动态脚本注入
var scriptElement = document.createElement('script');
scriptElement.src = 'http://xxxxx';
document.getElementsByTagName('head')[0].appendChild(scriptElement);
使用这种技术主要是为了浏览器跨域请求,因为浏览器允许script标签跨域。但是这种技术有诸多不方便地方,所以不建议使用。
(2) 发送数据
2. 数据格式
当考虑数据格式时,唯一的标准就是速度。
(1) XML
优点:
一、极佳的通用性(服务端和客户端都能完美支持)
二、格式严格
三、易于验证
缺点:
一、及其冗长
二、语法模糊
三、不易解析
(2) JSON
(3) JSON-P
由于json可以被本地执行,当使用动态脚本注入时,json数据被当成另一个js文件并作为原生代码执行。为了实现这一点这些数据必须被封装在一个
回调函数里,就是所谓的 "json with padding" 或 "JSON-P";
格式:
parseJSON([
{
"id": 1,
"username": 'alice'
}
])
注意:JSON-P必须是可执行的javascript,它可能被任何人调用并使用动态脚本注入技术插入到任何网站。
3. AJAX 性能指南
(1)缓存数据