原因是这样的:今天在做Ajax信息传递的时候,使用了上文说到的信息分类的收集办法,将不同的信息用text、json和xml三种方式传到服务器。

       问题就在这里,怎么收集这个状态并将它呈现给客户端呢,我首先想到的是给每一个完成的Ajax事件添加状态字符串,最后用字符串判定的方法来收集所有完成的状态,事实上,这个方法是可行的。但是我忽略了一点,那就是JavaScript的执行并不会顾及Ajax的状态,在所有的状态字符串还没有来得及回传改变时,程序就执行了字符串判定的方法来收集所有完成的状态的函数,结果当然是所有的请求都出错了,因为没有零延时的Ajax请求。

      我开始把多个Ajax请求串联起来,即一个执行成功之后再执行另一个,问题又出现了,因为我设计的Ajax的并发的,就是说就算第一个没有值不发生Ajax请求,第二个也要发生。这里当然就有问题了,只要一个出错或者空值不发生,别的就都不会请求了。

      路漫漫其修远兮,我开始收集别的办法,回到原点,重新思考,最后想到用JavaScript的时钟方法,每隔半秒收集一次信息,直到所有的状态字符串都成功为止,当然也有超时的时间.下面贴出解决的代码,代码不怎么高级,希望给大家一个解决办法的思想:

    状态字符串的声明:

     //监测返回的值
       var tp_suc="sb";
       var tm_suc="sb";
       var xx_suc="sb";
  时钟状态的收集:
     //收集信息,知道Ajax返回成功为止
            var sec=0;
            var time1=setInterval(function(){
            if(tp_suc!="suc"&&tm_suc!="suc"&&xx_suc!="suc"){sec++;if(sec>60){alert("响应超时");}}
            else
            {
              $("#img").hide();
              $("#re_suc").show();
              clearInterval(time1);
            }
            },
            500);//setInterval
   菜鸟拙见,欢迎指正讨论!

相关文章:

  • 2021-07-13
  • 2021-11-27
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-05
  • 2021-07-31
  • 2021-06-18
  • 2022-01-03
相关资源
相似解决方案