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提交序列化得到的字符串。*
   69   70   71   72   73   74   75   76   77   78   79