多Ajax并发的状态信息收集

       原因是这样的:今天在做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
 菜鸟拙见,欢迎指正讨论!

你可能感兴趣的:(Ajax)