Page 74 - JavaScript修炼之道
P. 74
64 第五部分 服务器端技术
任务 28 通过 Ajax 载入内容(同域名)
执行Ajax请求,尤其是在当前页面的同域名下,是当前许多Web应用非常基础的构建部分,
因而我有必要提及如何在所有主流框架下做这件事。然而,不要说一页,就算是十页也不可能讲
清楚所有的细节,毕竟每个框架都提供了大量的Ajax设置选项,需要很大篇幅才能讲清楚怎么设
置Ajax行为。
因此在右页只会涉及一些通用的特征,我会在此为你指出正确的方向,提供几条进一步探索
的途径。
所有框架都允许你用那四个基本的HTTP请求动词(GET、POST、PUT和DELETE)以及
调整过的HTTP头部来发送Ajax请求,因此你能够和REST服务等毫无障碍地交互。
所有框架都提供了一组回调函数,这样你就能给Ajax响应绑定自定义的处理函数,或者在
请求生命周期(开始、成功及失败、完成等)期间做别的事。常见的Ajax响应格式,比如
JavaScript、JSON、JSON-P、XML和HTML都有自带的、自动的解码方法(有时还有自动
处理的方法,尤其是对JavaScript和JSON-P)。
有几个框架允许你为Ajax选项指定通用的默认值(比如jQuery的$.ajaxDefaults)并注
①
册全局回调函数(通常是用来维护Ajax指示器,比如著名的“spinner” ,它对跨页面的
所有Ajax请求都有效)。
不少框架都为表单的“Ajax化”提供了快捷的操作方法,要么是直接对它们用HTML强制
②
序列化 ,要么允许你调整序列化的方式,例如, YUI 3有form选项,而Prototype为 <form>
元素加了 request() 操作。
每个框架都提供了一些特定功能,比如文件上传、基本的HTTP验证、重进入控制、请求
链、响应缓存等。
要确保正确处理Ajax调用的成功情况以及失败情况。人们往往都会忽略或者以糟糕的方式
处理Ajax失败。
最后一条建议:用同步模式的Ajax基本上等于是在你的网页上召唤邪恶的魔鬼。如果你想实
现同步,那就坦率点,用正常的页面重载!
——————————
① 在页面上显示出一个不停地动态循环旋转的图标,以标识当前Ajax请求正在进行之中,提示用户耐心等待。*
② 把整个表单及其填写内容编码为一个字符串。一般是对于字段(输入域)比较多的表单,希望通过Ajax动态提交,
因为逐项Ajax提交比较麻烦,所以先整个序列化再用Ajax提交序列化得到的字符串。*