2012-06-07 69 views
-5

我有一個包含文本字段和按鈕的表單。當我開始輸入時,它會顯示來自我的數據庫的提示,並且在點擊按鈕或點擊回車鍵時會顯示搜索結果。 AJAX用於提示和搜索結果,並且運行良好。無法運行多個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(); 
} 

問題是什麼?

+0

我天璣KNW誰是主持人,我就開1000次,直到我不會得到solution.if U可以,給的解決方案絕不浪費時間烏爾無用的評論 – cowboy

回答

5

我是猜測它第一次工作或刷新時的原因是因爲事件處理程序不是在ajax請求之間持續存在。我會研究jQuery,因爲它有助於緩解這樣的問題。

jQuery的<版本1.7 的.delegate()方法執行以下操作

附加一個處理程序,以一個或多個事件的選擇,現在或將來所有匹配的元素,基於一組特定的根元素。

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 

}); 
+0

耶大它的工作現在! thanx josh – cowboy

+0

很高興聽到它現在爲你工作,牛仔。如果有幫助,請標記爲已接受的答案。 –

相關問題