2013-08-24 92 views
0

我需要在JS數組中有一個MySQL表結果,以便在文本框中輸入時可以搜索名稱。我的意思是,讓我說我有一個名稱的表,現在當請求頁面時,它應該用MYSQL中的名稱列表填充div,div需要有一個輸入框,當輸入首字母時,下面的列表應該找到匹配搜索類似關鍵字的名稱。mysql導致在javascript全局數組中

對於這一點,我想我需要MySQL的結果存儲在一個JS數組,這樣的onkeyuponkeypress事件文本框中的,它應搜索從數組項匹配結果,並與只填充列表那些項目。

我知道,我將不得不在document.ready上提出一個ajax請求來從數據庫中獲取結果,但不知道如何將其存儲在數組中,然後在文本框事件中搜索。

+0

在PHP(或任何你正在使用服務器端語言),得到查詢結果並作出陣列出來的(按照你想要的結構),將它編碼爲** JSON **並返回。回到客戶端,*解析*響應,即使用'JSON.parse'將JSON轉換爲JS數組/對象,就完成了。看看[這個問題]中的代碼(http://stackoverflow.com/questions/3361231/json-php-javascript-simple-working-example)或谷歌的''''''''''''''''javascript javascript ajax json示例'。如果你不知道如何查詢數據庫,那麼你當然也需要學習。 –

回答

0

你需要的東西是這樣的:

這樣的輸入:

<input type="text" onkeyup="userscount('getusers.php')" name="name" /> 
<div id="shownames"></div> 

,這裏是JS的Ajax請求使用jQuery這個:

function userscount(url) 
{ 

     var val = $('[name="name"]').val() 
     $.ajax({ 
       type:'post', 
       data : {name: val }, 
       cache: false, 
       url: url, 
       dataType : 'json', 
       success: function(resp){ 
        $('#shownames').append(resp); 
       } 
       }); 


} 

您可以使用UL li添加

這裏是php代碼(getusers.php):

<?php 
if(isset($_POST['name'])) 
{ 
    $result = // execute your query 

    echo json_encode($result) 
} 

?> 

這個你不需要爲尋找一個JS數組,你在你的數據庫直接搜索

+0

多數民衆贊成我的意思是,如果我查詢每個類型的字符數據庫不會更慢,效率低下?因爲在用戶搜索時名稱列表不會真正改變,所以我認爲將它存儲在數組中一次然後搜索以填充結果會更好。 – coder101

+0

您的數據庫中的記錄永遠不會改變? –

+0

@ coder101:這一切都取決於你有多少數據。如果您只有10個條目,請繼續閱讀。如果您有成千上萬,請爲每個搜索字詞提出請求。不要在每次按鍵時撥打電話,在用戶輸入完畢後再撥打電話。然後,您可以將結果緩存在客戶端。 –