jquery ajax返回数据次序一问

Teo 发布于 2011/07/04 02:39
阅读 601
收藏 0

近日在开发一应用,在前端使用  jquery ajax返回数据时,返回同一格式的数据次序不一,请问如何解决呢?已经使用 settimeout,但是不行。。。。

例如:打开页面后需要向ajax发送连续请求取得数据,js里面已经使用循环for执行请求,但是每当刷新页面时,得到的数据不是按循环的次序。。请问有方法可解决吗?

代码事例:

function 抓羊(s){

    $.ajax{

        请求一只羊        

        success:function(羊){

                返回一只羊;

        })

        如果抓不到会返回失败或者0

}

期间代码省略。主要显示执行时

var wolf = 狼;

for(i=0;i<wolf.length;i++){

    如果肚子饿了就 抓羊(i);

}

按情况应该有多少只狼就能抓多少的羊,是按次序的,可是实际情况好像是随机的,每次刷新页面次序都不一样。。。求解。。

临时解决方法是,先规划抓羊后存放的位置,然后对应存放。。。

加载中
0
27号
27号
应该是:asyn=true,表示异步(默认),可设置成false试试。
0
红薯
红薯
ajax 本来就是异步的,你不可能保证返回结果的顺序
0
27号
27号
有设置成同步的参数,设置下试试。
0
Andre.Z
Andre.Z

同步的话,页面就卡住了。
你可以设置一个任务队列,数组就能搞定了。每次ajax请求回调执行后,检测任务队列还有任务没。照上面的例子,就是狼要抓羊,先排队,一个抓完后另一个继续抓。每只狼抓羊的速度都不一样(请求从发送到获取到返回信息再执行回调的时间),这个速度也不是每次都一样的,你同时放出几只狼,当然会有先后的区别了。
同步会降低页面操作的流畅性,非必要情况不建议使用。

还有就是用批处理,将多个请求合成一个,直接告诉后台,有N只狼要抓羊,后台看着办。这个需要修改你的后台代码。但是在有多次页面操作的时候,还是要用队列,每次N只狼,这个是前台代码修改。

返回顶部
顶部