0

このフォームを含むhtmlページがあります

<form id="quick-search" autocomplete="off" class="form-wrapper cf" >
    <div style="text-align: center;">
    <input id="qsearch" name="qsearch" onkeyup="liveSearch()" placeholder="Search here..." required="" type="text">
    <button  onclick='ajaxFunction()' id="submitButton">Search</button>
    </div>`

そして、ajaxFunctionの結果を配置するこのdiv

<div id='ajaxDiv'>Your result will display here</div>

ボタンをクリックすると ajaxFunction が実行されました。ユーザーがqsearch入力フォームに書き込むときにSQLクエリを作成するphpファイルを開くだけです。JavaScript コードは次のとおりです。

function createRequestObject(){
var request_o;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
    request_o = new ActiveXObject("Microsoft.XMLHTTP");
}else{
    request_o = new XMLHttpRequest();
}
return request_o;
}

var http = createRequestObject()
function ajaxFunction(){

// Create a function that will receive data sent from the server
http .onreadystatechange = function(){
    try{
        if(http .readyState == 4){
            if(http .status==200){
            try{
                var ajaxDisplay = document.getElementById('ajaxDiv');
                ajaxDisplay.innerHTML= http .responseText;
                }catch(err){
                    // display error message
                    alert("Error reading the response: " + err.toString());
                return false;
                }
            }
        }
        else{
            alert(http .readyState+" "+http .status);
        }
    }catch(e){
        alert('Caught Expection: '+e.description+' '+http .status);
        return false;
    }
}
var par = document.getElementById('qsearch').value;
var queryString = "?par=" + par;
http.open("GET", "results3.php" + queryString, true);
http.send(null); 
}

コードはうまく機能しますが、問題は、ボタンを 2 回クリックする必要があることです (もちろん、入力フィールドに同じテキストを入力して) 結果のテキストを div に残す必要があります。最初にクリックすると同じ結果が表示されますが、ページの自動更新と結果 (入力フォームのテキストも) が消えます。 . 生成される状態、ステータスは 1,0->2,200->3,200->1,0 です。状態 3 と 1 の間の結果がページに表示されます (明らかに状態 4 は問題なく表示されます) が、4 の後に状態 1 があるのはなぜですか? このすべてが Firefox 17.0.1 に含まれています。

4

1 に答える 1