2012-09-22 36 views
0

我使用下面的代碼製作一個簡單的文本框自動完成箱取出,JQuery的自動完成的keyup事件後的結果發射已經從phpscript

var sourceURLRide = "index.php?page=getRideAndParksJson&type=rides&keyword="; 
$("#fav_rides_select").autocomplete({ 
      source: sourceURLRide, 
      minLength: 1, 
      delay: 0 
}); 

但是我需要在每次改變源在fav_rides_select上激發關鍵事件,即源URL被更改,然後結果必須從url中獲取。但那沒什麼用。我使用下面的代碼與keyup事件同步源:

$("#fav_rides_select").keyup(function(){ 
      $("#fav_rides_select").autocomplete("option","source",sourceURLRide + encodeURIComponent($("#fav_rides_select").attr("value"))); 
}); 

注:我使用keyup事件傳遞關鍵字PHP腳本,因此只有初步認識的結果出現。

+1

如果 「警報(sourceURLRide);」在關鍵功能上,它顯示了什麼? – Nelson

+0

這是顯示所需的輸出,即關鍵字添加到網址.... – Abhishek

+0

我知道增加延遲將解決這個問題,謝謝你的幫助... – Abhishek

回答

1

後的文件已準備就緒,您應該如果它是不小的權加載整個JSON,也可以加載JSON的子集,但只有當它是真正的大數據。

這是一個很好的Article關於如何做大數據記住當前查詢的狀態。

如果你沒有谷歌,你可以使用下面的代碼:

$(document).ready(function(){ 
    var data = $.getJSON('index.php?page=getRideAndParksJson&type=rides',function(data){ 
    $('#fav_rides_select').autocomplete(
     source: data, 
     minLength: 1, 
     delay: 0); 
    }); 
}); 
+0

但是關鍵字如keyup事件呢? – Abhishek

+0

爲什麼每次有人按下某個鍵時都想要做一個ajax請求?每個HTTP請求都需要其時間。 – codingjoe

+0

由於數據庫表中有大量數據。 – Abhishek

1

嗯,你沒有在你的例子中傳遞一個對象。試試我的代碼(類似於你的第一個片段):

$("#fav_rides_select").autocomplete({ source: sourceURLRide + encodeURIComponent($("#fav_rides_select").attr("value")) }); 
+0

但是,當我增加延遲,它顯示正確的結果... – Abhishek

+0

@Abhishek我認爲你應該考慮接受約翰的回答,而不是 – Johan