JQ的ajax请求出问题了 我快奔溃了 求各位路人甲乙丙丁出手相救
var setinterval_id; var current_request; var isChange = false; $("#device").change(function(){ $("#kongxian").val('请稍后'); isChange = true; deviceName = $("#device option:selected").text(); clearInterval(setinterval_id); setinterval_id =setInterval(function(){ current_request=$.ajax({ type: "GET", data:", url: "", beforeSend:function(){ }, success: function(data){ if(current_request){ current_request.abort(); } if(isChange == true) isChange = false; else $("#kongxian").val(data); }, error:function(){ current_request.abort(); } }); },500); });
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
大概... 你删除循环请求就好了
粗略分析: ajax是异步请求,同一个异步请求你发出两次,浏览器应该不知道哪个响应对应哪个请求,所以这时候接收到的响应结果并不完全对应之前的请求。
本地没问题,是因为500毫秒在本地不存在网络延迟;你上线后可以测试500ms换成5000ms,这样的结果也许跟你预期一样
解决方法:
1. 响应处理逻辑用闭包, @sxgkwei 快到碗里来
2. 我忘了... (应该是请求带一个请求序列号(唯一值), 响应结果返回该值, 处理逻辑的时候判断...当初应该是这样想的 - -)
被我删的。 有时候可以正确请求到数据, 有时候就会出现上述代码。。
12行里,是你源代码里就少一个“号还是你粘贴过来的时候少的?
哈哈哈哈~
这样提问,看的人也崩溃了
谢谢, 我今晚调试下
具体是什么问题,,截图看看,打开浏览器调式器
嗯嗯。 我原来有async:false 变成阻塞 我jq是现学现卖。。没看过书, 就知道有一个ajax然后看了下基本写法就拿来用了。。
这写法... 这代码... 这么高深的代码书写方式只有你自己看得懂了
改变下写法,不建议这么写, ajax是异步 每隔500毫秒就请求, 后端代码根本就没法调试,current_request的值肯定会混乱,弄的出什么问题都找不到。 实在要这么写,把ajax设置中 加上 async:false 方便调试 和检查原因。