在 Javascript 方面,我为事件的文本注册了一个事件侦听<input>
器onkeyup
。
每次触发事件时,都会调用一个函数来创建一个xmlhttprequest
对象,该对象将输入value
作为 url 编码POST
变量传递给请求。
请求页面是一个aspx
脚本,它接受 post 变量,对其进行一些处理,并将处理后的输入作为参数添加到 MS SQL 查询中。执行查询产生的结果集被放入转换为 XML 的 a中,然后通过 XSLT 转换为 XHTML,然后通过注入方法dataset
插入到进行 ajax 调用的页面中。innerHTML
如果您到目前为止一直关注我,结果是在 MS SQL 数据库上进行全文搜索,该数据库会为每个密钥版本生成结果。值得一提的是,我使用的是 MS SQL 2005 和 IIS6.0。
该系统似乎运行良好,除了一个测试用例。那就是当有人尽可能快地输入输入时,服务器最终会501 internal server errors
为每个请求返回。几分钟后,它似乎会自行“修复”并再次正常运行。我无法从 IIS 中获得有关这些内部错误的任何有用信息。
现在这只是猜测,但我的第一个假设是,要么有太多未完成的同时打开的请求,要么在短时间内发出了太多的请求。
我最初的想法是创建一个队列,xmlhttprequests
一次只打开一个。
但是,我尝试了这个,而不是队列:
每个onkeyup
:
- 调用生成
abort
的最后一个xmlhttprequest
onkeyup
- 为此创建一个新
xmlhttprequest
的onkeyup
此过程似乎可以消除该问题。
我无法做的是确定这个问题的根本原因:它是服务器限制吗?还是浏览器限制?是否有其他方法可以在不需要此中止程序的情况下解决此问题?
如有必要,我可以发布代码,但代码非常冗长,并且该项目中使用了许多技术,所以我不确定它是否真的能帮助任何人回答这个问题。