質問

単純な検索フォームにjQueryのオートコンプリートプラグインを使用しています。オートコンプリートで使用するためにJSONオブジェクトデータを配列に変換するのに問題があります。

マイコード:

var listOfOrderedByNames = getAutocompleteData();
$('#OrderedBy').autocomplete(listOfOrderedByNames);

function getAutocompleteData() {
    var output;
    $.getJSON('AJAX/GetOrderedByNames', function(data) {
        $.each(data, function(index, optionData) {
            output += optionData + "|";
        });
    });
    return output;
}

返されるJSONデータは次のようになります。

    ["Jimmy","John", "Etc",null]

何らかの理由で、 getAutocompleteData 関数から返されたものは空の文字列で、何が間違っているのかわかりません。

助けてください!

役に立ちましたか?

解決

$。getJSON は非同期であるためです。リクエストを送信するとすぐに、関数 getAutocompleteData()は実行を継続し、何も返しません。

getJSONメソッドに渡すコールバック関数ですべてを囲む必要があります。

var output;
$.getJSON('AJAX/GetOrderedByNames', function(data) {
    var output = "";
    $.each(data, function(index, optionData) {
        output += optionData + "|";
    });
    $('#OrderedBy').autocomplete(output);
});

他のヒント

var output; 行を var output = '';

に変更してみてください
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top