当前位置:嗨网首页>书籍在线阅读

10-讨论

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

16.2.3 讨论

在开发较大的应用程序时,往往通过一个公用的Ajax网关传递所有请求。使用 $.ajaxSetup() 方法,我们可以设置Ajax请求默认设置。这会使整个应用程序中的Ajax请求变得简单:

$.ajax({
   data: {
     //我从服务器请求的数据
   },
   success: function(data) {
     //现在更新用户界面
   }
});

简单提一句,因为超时选项的值以毫秒表示(秒数×1000),所以超时值6000代表6秒。设置该值时要考虑的一件事是全球互联网的扩展。在你的访问者或者用户中,有些人所在位置的网络延迟可能超过你所在地区用户的期望值。所以,不要将该值设置得太低(例如,5秒)。指定较高的值(如30或者60秒)可以让具有高延迟连接(例如,使用卫星信道)的用户仍然能够享用你的应用程序。

在前一个例子中,对 ajax-gateway.php 进行POST请求。发生的错误将由 $.ajaxSetup() 中定义的错误函数处理。对于特定的请求,仍然可以按照如下方式覆盖设置:

$.ajax({
   url: 'another-url.php',
     data: {
        // 服务器请求数据
     },
     success: function(data) {
        //现在更新用户界面
   }
});

把前一个请求发送给 another-url.php 而不是 ajax-gateway.php

jQuery Ajax架构的好处之一是 ajaxCompleteajaxErrorajaxSendajaxStartajaxStopajaxSuccess 等全局事件。这些事件可以用 .bind('event', callback) 方法或者快捷方法 .event(callback) 设置。下面的例子展示了为 ajaxError 事件绑定回调的两种方法:

(function($) {
   $(document).ready(function() {
     $('#loadingIndicator')
        .ajaxError(function() {
          //你的代码
        });
     //或者使用bind()
     $('#loadingIndicator')
        .bind('ajaxError', function() {
          //你的代码
        });
   });
})(jQuery);

下面是可用事件的简要描述,以及触发的顺序:

ajaxStart

如果没有其他请求正在进行,则在Ajax请求开始时触发。

ajaxSend

在每个单独请求发送之前触发。

ajaxSuccessajaxError

在请求成功或者不成功时触发。

ajaxComplete

每当请求完成(不管成功还是出错)时触发。

ajaxStop

如果没有其他Ajax请求正在进行中则触发。

在下一个秘诀中,更详细地介绍这些事件。