2013-04-10 37 views
10

Arama kutularındaki select2'yi kullanıyorum. Sonuçları URL'imden alıyorum ancak bundan bir seçenek seçemiyorum. 'Product.productName' seçimden sonra gösterilecek metin olarak kullanmak istiyorum. Kaçtığım veya yaptığım herhangi bir hata var mı? Ben, select2.css ve select2.min.js dahil Bu benim resut_objectselect2 arama sonuçlarından bir sonuç seçilemiyor

"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"}] 

cevap

34

Sen sonuç verileri için kimlik özniteliği eksik olduğunu

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; 
      } 
     }); 
    }); 

jquery.js var. eğer değilse, "seçilemez" seçeneğini yapar.

Örnek: Ben de aynı sorunla karşı karşıya gelmiş

  $('#e7').select2({ 
        id: function(e) { return e.productName; }, 
      }); 
+0

Zamanım Kaydedilen !! ... Onlar korkunç belgelerine sahip .. Onların AJAX örnek! Bunu belirtmeliyiz ... –

+0

Telvin, link bozuk .. Ve ID ekleyerek btw benim için fark yaratmadı. –

+0

@AlexanderSuraphel Bu cevap dört yıl önce gerçekleşmişti ve OP problemini çözmesi gerekiyordu, bu durumda bağlantının kırılması durumunda örnek kodu koyayım, dolayısıyla referans önemli değil. Eklenti de güncelleniyor ve birçok şey değişti. Şimdi senin sorunun ne olduğu hakkında hiçbir fikrim yok. Afedersiniz. –

0

, bu soruna yönelik başka bir çözüm: -

yanıtınız nesnede

(yukarıdaki cevaben Ürün detayı nesne) bir "id" olmalıdır Bunun için anahtar ve değer olarak.

Örnek: - Senin yukarıda verilen yanıt nesnesi bu

{ "id" gibi olmalı: "1", "productName": "samsung galaxy s3", "üretici": "Samsung", "ProductOptions" : "Renk; Bellek", "productOptiondesc":;:;

0

id param olabilir} function (nesne) {object.key return "Gümüş 32GB"}

SO

bu kimliği gerekmez object özellik adına ilişkin bir dize olmalı ve nesnenin kökünde olması gerekir. Veri nesnesi içindeki metin. Ben AJAX kullanarak bu yana

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' } 
} 
); 
0

ne benim için çalıştı processResults üzerinde kimliği gibi bir şey dönen oldu:

$(field).select2({ 
    ajax: { 
     // [..] ajax params here 
     processResults: function(data) { 
      return { 
       results: $.map(data, function(item) { 
        return { 
         // proccessResults NEEDS the attribute id here 
         id: item.code, 
         // [...] other attributes here 
         foo: item.bar, 
        } 
       }) 
      } 
     }, 
    }, 
});