AJAX 在调试模式下工作,但不是实时的
AJAX works when in debug mode but not in real time
当我
在调试模式下缓慢步进时,我的代码可以工作,但是当我实时尝试时,它似乎不想更新页面。这是javascript:
searchButton = document.getElementById("searchButton");
var searchBox = document.getElementById('searchBox');
searchButton.addEventListener("click", searchItem);
function searchItem(){
searchString = searchBox.value;
article = document.getElementById("homeSection");
var xmlhttp = getXmlHttpRequestObject();
var string = '';
if(xmlhttp){
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
var response = JSON.parse(xmlhttp.responseText);
for(var i=0; i<response.length; i++){
string += '<section class="searchResult">';
string += '<h1>' + response[i].Name + '</h1>';
string += '<p class="photo"></p>';
string += '<p class="price">£' + response[i].Price + '</p>';
string += '<p class="productID">ID: ' + response[i].ID + '</p>';
string += '<p class="description">' + response[i].Description + '</p>';
string += '<p class="quantity">Quantity: ' + response[i].Quantity + '</p>';
string += '</section>';
}
article.innerHTML = '<h1>Search</h1><section><h1 class="bottomBorder">You searched for: "' + searchString + '"</h1></section>';
article.innerHTML += string;
}
};
xmlhttp.open("GET", "search.php?search=" + searchString, true);
xmlhttp.send(null);
}
}
你需要
做的两件事
- 取消触发函数的点击操作
- 对发送到服务器的内容进行第二次编码
更新的代码:
function searchItem (event){
event.preventDefault();
var searchStringEnc = encodeURIComponent(searchBox.value);
...
xmlhttp.open("GET", "search.php?search=" + searchStringEnc, true);
它不适用于IE,此处的其余响应和建议是正确的。为什么只使用 IE?因为您有未定义的变量:
searchString = searchBox.value;
正确
var searchString = searchBox.value;
要检查您的脚本是否真正有效,只需提醒格式化的字符串即可。
article.innerHTML += string;
alert(string);
然后你就会知道出了什么问题。
如果您使用表单中的按钮通过 AJAX 发布,请确保按钮类型="按钮",否则它将充当提交按钮并提交表单。这个小功能让我感到沮丧!!
相关文章:
- event.prventDefault()不工作(jQuery实时)
- AJAX 在调试模式下工作,但不是实时的
- 幻灯片在本地工作,但在实时站点上不工作
- 为什么我的程序在我的测试环境中工作,而不是我的实时站点
- 实时更新如何工作
- 为什么我的 javascript 在测试环境中工作,但在实时站点上不起作用
- Javascript 未捕获类型错误仅在实时环境中,在 Dev 上工作正常
- 在jsFiddle中工作,但不在实时站点上工作
- 在实时服务器上未定义,但在本地主机上工作
- JW Player 6在本地服务器上工作,但不在实时服务器上
- 当一个实时网站在文件系统中工作时,是什么导致它无法工作
- 在网页网格表上进行实时搜索,分页仅在实际页面上工作
- 尝试使用javascript camgaze.js绘制图像,从网络摄像头实时检测人脸-不工作
- 当使用实时事件时,JQuery slideToggle不能在IE8中工作
- 如何谷歌分析实时工作
- 结合两个单独工作的javascript,将实时数据发送到websocket
- 带push事件的实时Rails不工作
- jQuery的实时邮件验证不工作,我找不到bug
- 为什么实时点击功能自动工作时,它应该只发生在点击
- 模型弹出窗口内的自动对焦无法实时工作