0

何よりもまず、一人で開始するわけではありませんが、mvc プロジェクト全体をやみくもに完成させようとしている初心者として私を撃たないでください。

とにかく、データがデータベーステーブルから取得されるテキストボックスに jquery ui オートコンプリートを実装する方法について、私は完全に混乱しています。

インターネットで見つけたものを使用して試してみましたが、jquery関数で思いついたのは次のとおりです。

        $(function (){
        $("#autoCompleteText").autocomplete({
            source: function(request, response) {
                $.ajax({
                    type: "POST",
                    traditional: true,
                    dataType: "json",
                    url: "/Service/jsonAutoComplete",
                    success: function(result) {
                        response($.map(result.d, function (item){
                            return {
                                value: item.ProductName
                            }
                        }))
                    },
                    minLegth: 2
                });
            }
            });
        });

私のコントローラーのメソッドについては、次のようになります。

public JsonResult jsonAutoComplete(int companyId)
    {
        JsonResult result = new JsonResult();
        Products products = new Products();
        products = db.Products.FirstOrDefault(x => x.CompanyId == companyId);
        int productId = products.Id;
        SelectList select = this._selectFactory.CreateSelectListFromProductsByCompanyId(products.Id, companyId);
        result.Data = new { select = select, productId = productId };
        return result;
    }

データベースにある製品の最初の 2 文字を入力しようとしても何も起こらないので、ここで何か間違ったことをしていると確信しています。

また、 $.map の正確な意味は何ですか? Web で見たほとんどの例にはこれが含まれていたので、必要だと思いましたが、まだよくわかりません。

4

1 に答える 1

1

あなたは商品名を送信していません。そのようなことを試してください:

$("#autoCompleteText").autocomplete({
    source: function(request, response) {
        $.ajax({
            // other settings
            data : {
                name: request.term
            }
            // other settings
        });
    }
});

現在、あなたが使用しているサーバー側のテクノロジーについてはあまり知りませんが、おそらく次のようにする必要があります。

public JsonResult jsonAutoComplete(string name) {
    // TODO: search for products STARTING with name
    // and return it as a JSON list
}

// 編集

$.mapある配列を別の配列に変換する jQuery 関数です (「コンバーター」関数に基づく)。autocompleteプラグインには特定の形式のデータが必要ですが、サーバーからの応答では異なる可能性があるため、ほとんどの例でこれが見られます。たとえば、次のようになります。

var A = [1,2,3,4,5];
var result = $.map( A, function(el) { return 10+el; } );
// result -> [11,12,13,14,15]
于 2012-10-31T09:00:57.820 に答える