2013-04-03 59 views
0

我需要執行搜索並將其保存在動態輸入字段中。我是Ajax新手。Php Ajax Json搜索並填充輸入字段

這就是我所做的。 的確從數據庫中查詢和使用JSON如下

[{"id":"1","name":"Jack"},{"id":"2","name":"Ace"},{"id":"3","name":"Test"}] 

現在有與名稱的輸入域的形式編碼(注:只允許從數據庫中現有名稱)。當輸入名稱時,我需要在Json中執行搜索並獲取名稱並將其顯示在輸入字段下方(確切地說,Google搜索顯示相關搜索字詞的方式),並且該名稱應該是可單擊的,應該用該名稱填充輸入文本。還可以通過各自的id更改隱藏輸入字段的值。

<input id="name" type="text" name="name"> 
<input id="id" type="hidden" name="id"> 

正如我以前說過只有在列表中的名稱是允許的,如果不存在的名字進入了隱藏的元素不應該有它的值或0。

我該怎麼做?而且它應該被優化(快速),因爲它必須在大量數據中搜索約15k-20k的名字。

+2

嘗試jQuery的自動完成 – bipen

+1

以上是正確的,[和這裏是它的鏈接](http://jqueryui.com/autocomplete/)。但是,如果您使用的是15k-20k名稱,那麼您應該使用臨時表來存儲常用搜索結果,因此您不必一遍又一遍地查詢整個表。 – Ohgodwhy

+0

我會盡力謝謝。臨時表是什麼意思?與查詢表不一樣嗎?當表中有更新時,它將如何更新臨時tble? –

回答

2

檢查這個撥弄我您的需求創造,我用自動完成的方法

http://jsfiddle.net/X85LT/

var src = [{ 
"label": "Jack", 
    "value": "1" 
}, { 
    "label": "back", 
     "value": "2" 
}, { 
    "label": "tera", 
     "value": "3" 
}, { 
    "label": "judo", 
     "value": "4" 
}]; 

$('.name').change(function() { 
$('.value').val(0); 
}); 

$(".name").autocomplete({ 
    source: src, 
    select: function (event, ui) { 
     event.preventDefault(); 
     this.value = ui.item.label; 
     $('.value').val(ui.item.value); 
    } 
}); 

// HTML

<input type="text" class="name" /> 
<input type="text" class="value" /> 
+0

謝謝。但我不能在我的網站上運行它(複製精確的代碼,在頭部和輸入字段中放置javascript代碼),我正在使用Jquery 1.91和日曆工作正常。此外,我在CodeIgniter框架上工作,如果這有什麼不同。 –

+0

謝謝。你的腳本只做了很少的改動,對不起,我沒有正確地看它。 –

+0

現在是最後一塊拼圖。我怎樣才能將php變量傳遞給javascript。我已經將JSON結果保存在$ temp中,並且我在