欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

ajax以致后续的程序被卡死,除非取消ajax请求或者完成,这是什么原因?语言是asp

更新时间: 2014-01-05 01:53:52 责任编辑: Author_N1

 

Ajax导致后续的程序被卡死,除非取消Ajax请求或者完成,这是什么原因?语言是ASP
页面A:列表页,列表页上有个额外的DIV是放置Ajax返回结果的。这个Ajax请求是在页面载入完毕之后,在服务器端创建一个Msxml2.ServerXMLHTTP对象,向另外一个API提供商请求返回一个XML文档。返回成功之后,ASP程序负责在服务器端把这个XML内容提取出来,放在一个HTML里面,然后又最开始的那个Ajax填充到这个DIV里面去。

过程可能有点绕,简单说:
a.html加载完成--->JS(Jquery).Ajax请求Ajax_a.asp页面--->Ajax_a.asp页面是个纯程序,创建服务器端Msxml2.ServerXMLHTTP对象请求API内容--->API返回XML--->Ajax_a.asp分析XML并填充数据--->Ajax_a.asp响应一段html代码--->Jqeury.ajax获取到html--->$('#div').html(data);

客户端和服务器端两个异步操作。

但是因为API那边和我们服务器之间的通讯受网络环境影响,有时候会超时,有时候响应时间很长,在等待响应的时候,如果点击页面A上的链接打开新窗口<target="_blank">进入到页面B.asp,那么B.asp页面也不执行,必须等A.html发起的Ajax完全结束(要么成功,要么超时,要么取消)时,B.asp的代码才会运行。

这个原因在哪呢?我把target="_blank"去掉,在当前窗口跳转到页面B.asp,FireBUG会显示之前的Ajax被取消——这个很容易理解。问题是现在需求不允许去掉target="_blank"....

--参考方法--
应该是服务器端的xhr请求阻止了其他发送到服务器端的请求,并不是客户端的xhr请求导致的。

之前碰到过,也是用服务器端xhr抓别人的信息更新数据库,执行大概10多s才完成,客户端xhr请求这个页面后,点击其他链接打开的页面都是空白的,一直loading直到客户端xhr完成

你可以将服务器端xhr设置为异步的试试,我是没试过。。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 01:53:52
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/2735/
本文WWW.DOC100.NET DOC100.NET版权所有。