来自快速输入的ajax onkeyup事件501

时间:2012-04-26 14:48:56

标签: javascript asp.net ajax xmlhttprequest onkeyup

在Javascript方面,我为<input>事件的文本onkeyup注册了一个事件监听器。

每次触发事件时,都会调用一个函数来创建一个xmlhttprequest对象,该对象将输入的value作为url编码的POST变量传递给请求。

请求页面是一个aspx脚本,它接受post变量,对其进行一些处理,并将处理后的输入作为参数添加到MS SQL查询中。从执行查询生成的结果集放入dataset,转换为XML,然后通过XSLT转换为XHTML,然后插入到通过innerHTML注入进行ajax调用的页面中方法

如果您到目前为止跟踪了我,结果是在MS SQL DB上进行全文搜索,为每个密钥版本生成结果。还值得一提的是我使用的是MS SQL 2005和IIS6.0。

除了一个测试用例外,系统看起来效果很好。也就是说,有人只是尽可能快地输入输入,服务器最终会为每个请求返回501 internal server errors。几分钟后,它似乎“修复”自己并再次正常运行。我无法从IIS中获取有关这些内部错误的任何有用信息。

现在这仅仅是猜测,但我的第一个假设是,有太多未公开的同时请求尚未完成,或者在短时间内提出的请求太多。

我最初的想法是创建这些xmlhttprequests队列,并且一次只打开一个。

然而,我试过这个而不是队列:

每个onkeyup

  1. abort
  2. 生成的最后xmlhttprequest上致电onkeyup
  3. 为此xmlhttprequest
  4. 创建新的onkeyup

    此程序似乎可以解决问题。

    我无法做的是确定此问题的根本原因:它是服务器限制吗?或者它是浏览器限制?有没有其他方法可以解决这个问题,而不需要这个中止程序?

    我可以在必要时发布代码,但是代码非常冗长,并且在这个项目中使用了很多技术,所以我不确定它是否能真正帮助任何人回答这个问题。

1 个答案:

答案 0 :(得分:1)