无法在不刷新的情况下运行多个 AJAX 调用
Unable to run multiple AJAX calls without refreshing
我有一个包含文本字段和按钮的表单。当我开始键入时,它会显示来自我的数据库的提示,单击按钮或按回车键时,它会显示搜索结果。AJAX 用于提示和搜索结果,并且运行良好。
问题是它仅在页面加载后第一次工作。如果我想要另一个搜索,它没有响应。它只显示以前的搜索结果,直到页面刷新,但showhint()
功能运行良好。
<input type="text" id="txt" onkeyup="showhint(this.value)"/>
<input type="button" value="search" onclick="searchresult()"/>
AJAX 函数:
function searchresult() {
var key = document.getElementById("txt").value;
var xmlhttp;
if(window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("mid").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("GET","keyprocess.php?q=" + key, true);
xmlhttp.send();
}
问题出在哪里?
我猜它第一次或刷新时工作的原因是因为事件处理程序在 ajax 请求之间没有持久存在。 我会研究jQuery,因为它将有助于缓解这样的问题。
对于 jquery
根据一组特定的根元素,将处理程序附加到现在或将来与选择器匹配的所有元素的一个或多个事件。
1.7 之后的任何内容都应该使用 .on() 方法。
基本上,如果页面上的元素从 ajax 请求更改,.delegate() 或 .on() 方法仍将允许处理事件。
更新:
//This needs to be within the $(document).ready function
//Attach an event handler to the ID called txt that fires on changes
$("body").on("change", "#txt", function(event){
//get the value from the input
var $val = $(this).val();
//Send the $val to keyprocess.php via ajax call
//Output Results
});
相关文章:
- 运行AJAX脚本
- 在弹出函数中运行AJAX
- Javascript.在当前AJAX停止后运行AJAX流
- 运行 AJAX 需要什么 - 将 jQuery 添加到页面处理 AJAX 调用
- 如何先追加,然后在jquery中运行ajax
- 在document.ready jquery上运行ajax请求
- 运行 ajax 函数以每 3 秒检查一次 json 响应
- 运行 AJAX 函数的多个实例 - 仅第二个实例更新
- 使用 JQuery 运行 AJAX 和使用普通 XMLHttpRequest 运行 AJAX 有什么区别?
- 一个接一个地运行 ajax
- 如何排序这个jQuery tha运行ajax然后必须返回true
- 运行 AJAX 异步时文档类型标记的“意外输入结束”,但在同步时则不然
- 在页面加载时运行ajax,然后每5秒运行一次
- 阻止对运行AJAX的超链接执行默认操作
- 在运行ajax请求时,无法将内部html设置为null
- 运行AJAX调用的javascript代码
- 在因检测Adblocker(Ghostery)而被阻止的URL上运行Ajax请求
- 当鼠标(或手指)不再拖动时,我怎么能只在更改时运行AJAX调用呢
- 在运行AJAX调用之后,不会执行jquery代码
- 在点击事件上运行AJAX调用——使用React.js