2

重複の可能性:
jquery autocomplete this.source is not a function error

すべての顧客アカウント番号を返すために API に接続したいオートコンプリートがあります。問題は、API が AccountNumber、InvoiceNumber、Name、Address などのオブジェクトを返すことです。次のように、ソースを AccountNumber のみにしようとすると、次のようになります。

$.getJSON('/api/Customers', function(data) {
    $("#AccountNumber").autocomplete({
        source: data.AccountNumber,
        minLength: 4
    });
});

このエラーが返されます:

Uncaught TypeError: Property 'source' of object #<Object> is not a function

ここで私が間違っていることはありますか?

4

2 に答える 2

2

コールバックはオブジェクトを返すため、データをプルしてararyに配置する必要があります。アカウントオブジェクトの配列である限り、dataこれを試すことができます。

$.getJSON('/api/Customers', function(data) {
    var acctNums = [];
    for(a in data) {
        acctNums.push(data[a].AccountNumber);
    }   

    $("#AccountNumber").autocomplete({
        source: acctNums,
        minLength: 4
    });
});

別のオプションは、顧客アカウント番号の配列のみを返す別のリクエストルートを追加することです。そうすれば、そのまま渡すことができます。

$.getJSON('/api/Customers/AccountNums', function(data) {
    $("#AccountNumber").autocomplete({
        source: data,
        minLength: 4
    });
});

最後に、 jQueryUIプラグインに呼び出しを処理させることができます。オートコンプリートの場合のみJSONオブジェクトの配列を返す別のリクエストルートを作成する必要があります(それぞれにプロパティが含まれvalueていlabelます)。次に、ルートの絶対URLまたは相対URLを使用してデータを取得します。以下は小さな例です。

$("#AccountNumber").autocomplete({
    // This GET Request returns an Array of Objects used for Auto-Complete:
    // [ { label: "Choice1", value: "value1" }, ... ]
    source: '/api/Customers/AccountNumsAuto',
    minLength: 4
});
于 2012-09-10T14:49:58.373 に答える
0

jQuery UI オートコンプリートのソース属性は次のようにする必要があります。

  • 結果の配列:
    source : ["string1","string2","string3","string4"]

  • 文字列 (クエリを処理するリモート PHP ページの URL)。これにより、このページへの ajax リクエストがトリガーされます。このパラメーターtermには、検索値が含まれます。
    source : "page.php"

  • 2 つのパラメータrequestとで呼び出される関数response。最初のものには検索の値 ( request.term) が含まれ、2 番目には値を入力する必要があるオブジェクトが含まれます。

jQuery UI のドキュメントを読む必要があります。
あなたの場合、JSON を結果の配列に変換できます。

于 2012-09-10T14:52:13.393 に答える