데이터베이스와 통신하는 동적 AJAX 검색 막대를 만들려고합니다. 여기 내 코드가있다.readyState가 4로 변경되지 않습니다
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 = '';
}
문제는 readyState가 0에서 1로 변경되지만 다른 상태로 변경되지 않는다는 것입니다. 함수를 입력하려면 4로 변경해야합니다. handleSearchSuggest(). 또한 콘솔에서이 오류를 얻을 : 형식 오류 : search.onreadystatechange가 null
이 줄은 무엇입니까? : "search.onreadystatechange.handleSearchSuggest;" – Hacketo
콜백 함수 –
콜백 함수를 가리 키지 않고 정의되지 않은 속성을 호출합니다. – Hacketo