+ -
当前位置:首页 → 问答吧 → 为什么AJAX的错误会连错好几次??

为什么AJAX的错误会连错好几次??

时间:2009-06-26

来源:互联网

问题我写在代码里了, 高手SOS我
复制代码
  1. $(document).ready(function() {
  2.     load_table(true);
  3. });
  4. function load_table(is_deep) {
  5.     var deep = is_deep;
  6.     $.ajax({
  7.         type: 'POST',
  8.         dataType: 'json',
  9.         url: url,
  10.         data: {xx:xx, xxx:xxx},
  11.         cache: false,
  12.         error: function() {
  13.             alert('错误!'); // 为什么AJAX出错这个对话会连续出现3次
  14.             deep = false; // 为什么这里设置了false, 后面的还是运行了?
  15.             return false; // 为什么这里return false了,后面的代码好像还是运行了?
  16.         },
  17.         success: function(r){
  18.             show_table(r.data);
  19.         }
  20.     });
  21.     if (deep === true) {
  22.         window.setTimeout(function() {
  23.             load_table(deep);
  24.         }, 5000);
  25.     }
  26. }

作者: vps4   发布时间: 2009-06-26

load_table(true);
deep为true,异步执行ajax函数,由于函数还未出错,deep === true成立,匿名函数被延时调用

之后假如ajax函数出错,return false只是让出错的处理函数结束,属于毫无意义的语句。

5秒后匿名函数开始调用,此时假如ajax函数还未出错,deep就是true,继续执行load_table(true);

而之后假如ajax函数出错,2次调用的load_table属于不同的环境,因此deep不是同一个变量,不会对deep === true这个判断造成任何影响

也就是说只要你的ajax函数在5秒后才出错,那么就会永远alert下去

作者: keakon   发布时间: 2009-06-27

相关阅读 更多