我正在創建一個AJAX動態搜索欄,它從數據庫返回結果。我發現當我打開調試器時,代碼不會進入函數handleSuggest()它設置顯示結果的div的內部html。這是我的代碼。javascript函數似乎沒有調用
function getXmlHttpRequestObject(){
if(window.XMLHttpRequest){
return new XMLHttpRequest();
}
else if (window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}
else{
alert("Your browser does not support our dynamic search");
}
}
var search = getXmlHttpRequestObject();
function ajaxSearch(){
if (search.readyState == 4 || search.readyState == 0){
var str = escape(document.getElementById('searchBox').value);
search.open("GET", 'searchSuggest.php?search=' + str, true);
search.onreadystatechange.handleSearchSuggest();
search.send(null);
}
}
function handleSearchSuggest(){
if(search.readyState == 4){
var ss = document.getElementById('ajaxSearch');
ss.innerHTML = '';
var str = search.responseText.split("\n");
for(i=0; i<str.length-1; i++){
var suggestion = '<div onmouseover="javascript:suggestOver(this);"';
suggestion += 'onmouseout="javascript.suggestOut(this);"';
suggestion += 'onclick="javascript:setSearch(this.innerHTML);"';
suggestion += 'class="suggestLink">' + str[i] + '<div>';
ss.innerHTML += suggestion;
}
}
}
function suggestOver(divValue){
divValue.className = "suggestLink";
}
function suggestOut(divValue){
divValue.className = "suggestLink";
}
function setSearch(x){
document.getElementById('searchBox').value = x;
document.getElementById('ajaxSearch').innerHTML = '';
}
此問題非常具體:嘗試將您的代碼縮小爲問題的最小示例。更好的是,包括一個jsfiddle的例子。 – mikemaccana 2014-12-07 14:25:16
裏面你的函數ajaxSearch你應該做這個'search.onreadystatechange = handleSearchSuggest;'採取[看](http://www.w3schools.com/ajax/ajax_xmlhttprequest_onreadystatechange.asp) – 2014-12-07 14:31:18