おそらくdelegation
問題です。
オートコンプリートの伝播例が追加されました
//build the autocomplete function, sans source
$('#servicename').autocomplete({
minLength: 2
});
var theArray = [];
$('body').on('change', 'select', function(){
$.ajax({
url: 'index.php?key='+$(this).val(),
dataType: 'json/jsonp',
success: function(data){
//i don't know what the array you return looks like, but autocomplete expets a key:value relationship
$.each(data, function(key, value){
theArray.push({label: value, value: key});
});
//a custom function to pass the array into
startAutoComplete(theArray);
}
});
});
function startAutoComplete(array){
$('#servicename').autocomplete('option', 'source', array);
}
上記のコードを使用して、オートコンプリートインスタンスをインスタンス化し、ソースを除いて必要なパラメーターのみを識別します。
次に、ajaxリクエストから返されたデータをにプッシュできる空の配列を定義します。
select関数では、解析するサーバーに値を渡します。JSON / JSONP形式を期待しているかどうかはわかりませんので、自分で変更する必要があります。
サーバーからリクエストを取得しているので、レスポンスが編集success:function(data)
されているとよいでしょう。json_encode
また、値を配列にプッシュするときは、key -> value
関係を使用するのが最適です。オートコンプリートを使用すると、alabel
とaに次のvalue
ようにアクセスできます。function(event, ui){ //do stuff with ui.item.label / ui.item.value}
のスコープ外で初期化されていない関数を宣言しdocument.ready
、配列を関数に渡します。この関数内で、オートコンプリートのソースを変更します。
これがすべて理にかなっていることを願っています。