2011-03-08 2 views
0

ねえ、皆さん。私はjQueryとJavaScriptの方が一般的です.jQuery-uiのAutocompleteウィジェットには少し問題があります。フォーマットされたJSONデータをjQuery-UIとして使用する際の問題オートコンプリートソース

私はmySQLデータベースから取得し、かなり特殊な方法でPHPでフォーマットしたJSONデータをたくさん取得しようとしています。次に、このデータの一部を配列に整形して、オートコンプリートウィジェットのソースとして使用します。

var dogs = []; 
$('.dogs').autocomplete({ 
    source: dogs, 
    delay: 10, 
}); 

かなり基本的な、そして予想通り、私はそれが仕事を得ることができます:ここで

は、オートコンプリートビットです。私がAjaxで始めるときは、物事が混乱するときです。

私のJSONデータは、それぞれの「dog」が2つの名前と固有の数値IDを持ち、データを簡単にループできるように書式設定されています("0":{"actu":"Actual Name0","disp":"Display Name0"},"1":{"actu":"Actual Name1","disp":"Display Name1"}, etc.)。

var dogNames = []; 
$.getJSON("dataconditioner.php", function(json) { 

    for (var k in json){ 
     dogNames[k] = json[k]["disp"]; 
    } 
    $('.dog').autocomplete("option", "source", dogNames); 
}); 

ここでの目標は、すべての表示名を1次元配列に取得し、その配列をソースとして使用することです。 alert()を使用してコールバック内の結果を出力すると、配列が正しく形成されたように見えますが、期待される結果が得られます。しかし、何らかの理由でオートコンプリートはこの配列をソースとして使用しても何もしません。

ありがとうございます。

答えて

1

dogNames.push(json[k].disp)を使用して配列を作成したいとします。

あなたのコードはdogNamesを連想配列またはオブジェクトとして扱いますが、オートコンプリートのソースオプションとしては使用できません。これは、 "k"の値が整数ではなく文字列であるためです。オートコンプリートソース配列の順序は関係ありませんので、作成している配列にインデックスを付けることを心配しないでください。各要素をその上に押して、プラグインがあなたのために重い持ち上げをさせるようにしてください。

0

カンマ区切りの文字列としてdognamesを取得し、この

$('.dog').autocomplete("option", "source", dogNames.split(',')); 
としてみてください
関連する問題