jquery ajax问题请教
<script> for(i=0;i<data['content'].length;i++){ var pid=data['content'][i]; //alert(pid); $.ajax({ url:'demo.php', type:'post', data:{"pid":pid,"qualifier":$('#qualifier').val()}, timeout:1, beforeSend:function (){ $('#tips').append('<p id="process'+pid+'"><span class="blue">产品'+pid+'数据处理中...</p>'); }, success:function(data){ }, error:function error(xhr,msg,error){ if(msg=='timeout'){ $('#process'+pid).append('<span class="alert">'+pid+'连接超时</span>'); }else{ $('#process'+pid).append('<span class="alert">'+pid+'系统错误</span>'); } }, }); }
得到的结果
产品1数据处理中...
产品2数据处理中...2连接超时2连接超时
不是我预期的:
产品1数据处理中...1连接超时
产品2数据处理中...2连接超时
什么地方错了?
还有我这样写,是逐条将data['content']里的数据发送到demo.php,一条处理完后再执行下一条吧
好像加上async: false,后,才会是一条处理完再处理,下一条,但加上后,连接超时提示一条都没有显示
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
请教这种回调怎么写?能大致给段代码吗?
思路是对的,代码有点小错误,感谢
1. jQuery的ajax默认是异步的,异步的请求并不保证能按发出的顺序完成。
2. 同步的请求,应该不能设置超时 。
3. 你这种需求使用请求链应该可以实现,即在产品1处理成功或超时的回调里处理产品2,产品2的回调里处理产品3……
ajax处理是异步的,你不能把data写在外面进行判断。如果要这样做就必须把async: false,为同步。
所以你应该把处理程序写在
success:function(){}里面。
大致是这个意思,你试试?