来自快速输入的 AJAX OnKeyUp 事件 501
ajax onkeyup event 501 from rapid input
在Javascript方面,我为onkeyup
事件注册了一个文本<input>
的事件侦听器。
每次触发事件时,都会调用一个函数,该函数创建一个 xmlhttprequest
对象,该对象将输入的value
作为编码POST
变量的 url 传递给请求。
请求页是一个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
:
- 在
onkeyup
生成的最后一个xmlhttprequest
上调用abort
- 为此
onkeyup
创建新xmlhttprequest
此过程似乎可以消除该问题。
我无法做的是确定此问题的根本原因:是服务器限制吗?还是浏览器限制? 有没有其他方法可以解决此问题而无需此中止过程?
如有必要,我可以发布代码,但是代码非常冗长,并且该项目中使用了许多技术,所以我不确定它是否真的可以帮助任何人回答这个问题。
你可能想看看去抖动。
http://ajaxian.com/archives/debounce-your-javascript-functions
- 无法在通过jQuery的ajax加载的页面中执行javascript
- onkeyup无法动态创建多个文本区域
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在php文件中获取$.post-ajax传递的值
- Replacing $ .ajax?
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- Ajax发布表单序列化,发布引号'
- 通过Ajax将JavaScript函数传递给PHP文件
- ajax请求的顺序总是不同的
- 可以't使用Polymer's的核心ajax
- Ajax Live搜索发布到Laravel视图
- Ajax聊天消息重复而不仅仅是更新
- 从控制器返回后Ajax启动事件激发
- PHP AJAX图片上传示例不上传
- 从ajax请求中获取javascript对象
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 在 onKeyup AJAX 调用第一次不起作用或按回键时
- 来自快速输入的 AJAX OnKeyUp 事件 501
- onKeyUp不工作?也许是糟糕的ajax代码
- 在onkeyup执行AJAX请求前等待1秒