13

検索ボックスに select2 を使用しています。URL から結果を取得していますが、その URL からオプションを選択できません。選択後に表示されるテキストとして「product.productName」を使用したい。私が見逃したもの、または私が犯した間違いはありますか。select2.css と select2.min.js,jquery.js を含めました

  function dataFormatResult(product) {
        var markup = "<table class='product-result'><tr>";

        markup += "<td class='product-info'><div class='product-title'>" +     product.productName + "</div>";
        if (product.manufacturer !== undefined) {
            markup += "<div class='product-synopsis'>" + product.manufacturer + "</div>";
        }
        else if (product.productOptions !== undefined) {
            markup += "<div class='product-synopsis'>" + product.productOptions + "</div>";
        }
        markup += "</td></tr></table>";
        return markup;
    }

    function dataFormatSelection(product) {
        return product.productName;
    }
    $(document).ready(function() {
        $("#e7").select2({
            placeholder: "Search for a product",
            minimumInputLength: 2,
            ajax: {
                url: myURL,
                dataType: 'json',
                data: function(term,page) {
                    return {
                        productname: term 
                    };
                },
                results: function(data,page) { 

                    return {results: data.result_object};
                }
            },
            formatResult: dataFormatResult, 
            formatSelection: dataFormatSelection, 
            dropdownCssClass: "bigdrop", 
            escapeMarkup: function(m) {
                return m;
            } 
        });
    });

これは私のresut_objectです

"result_object":[{"productName":"samsung galaxy s3","manufacturer":"Samsung","productOptions":"Color;Memory","productOptiondesc":"Silver;32GB"},{"productName":"samsung salaxy s3","manufacturer":"Samsung","productOptions":"Color;Memory","productOptiondesc":"Graphite;32GB"},{"productName":"samsung galaxy s3","manufacturer":"Samsung","productOptions":"Color;Memory","productOptiondesc":"Silver;16GB"}]
4

4 に答える 4

1

id パラメータは、オブジェクト プロパティ名に関連する文字列にすることができ、オブジェクトのルートにある必要があります。データ オブジェクト内のテキスト。

var fruits = [{code: 222, fruit: 'grape', color:'purple', price: 2.2},
  {code: 234,fruit: 'banana', color:'yellow', price: 1.9} ];

$(yourfield).select2(
 {
   id: 'code',
   data: { results: fruits, text: 'fruit' }
 }
);
于 2016-06-07T12:12:53.413 に答える
0

私は同じ問題に直面しました。この問題の他の解決策は次のとおりです。

応答オブジェクト (上記の応答製品詳細オブジェクト) には、そのキーと値として「id」が必要です。

例: - 上記の応答オブジェクトは次のようになっている必要があります

{"id":"1","productName":"samsung galaxy s3","manufacturer":"Samsung","productOptions":"Color;Memory","productOptiondesc":"Silver;32GB"}

したがって、この id は必要ありません: function(object){return object.key;}

于 2015-11-17T05:51:25.527 に答える