2015-05-28 8 views
7

मैं JSON सरणी के साथ एक select2 तत्व को पॉप्युलेट करने का प्रयास कर रहा हूं; लेकिन मुझे यह नहीं मिल रहा है।init काम नहीं करता है के बाद JSON के साथ चयन 2 पॉप्युलेट करें

मैं अगले सरणी है:

data = [{"id":"Foo","text":"Foo"},{"id":"Bar","text":"Bar"}] 

और मैं इस प्रकार Select2 प्रारंभ:

$("#selectElement").select2(); 

मैं पॉप्युलेट करने के लिए अगले कोड का उपयोग करें:

$('#selectElement').select2('data', data, true); 

लेकिन does not काम और मुझे नहीं पता क्यों। कोई मेरी मदद कर सकता है?

संपादित करें: मैं Select2 की init के बाद से पॉप्युलेट करने (मैं AJAX से JSON प्राप्त)

मेरे इरादे अन्य Select2 की AJAX खोज की JSON के साथ मेरे सवाल का Select2 पॉप्युलेट है।

सभी पॉप्युलेट को छोड़कर अच्छी तरह से काम (मैं पहले की formatSelectiom विधि में अच्छी तरह से इस JSON मिलता है लेकिन मुझे नहीं पता है कि मैं इस के साथ दूसरे Select2 पॉप्युलेट करने के लिए कर सकते हैं)

उत्तर

7

मैं अपने कोड के बीच कुछ अंतर नज़र और से select2

एक आपका डेटा:

var data = [{"id":"Foo","text":"Foo"},{"id":"Bar","text":"Bar"}]; 

होना चाहिए:

var data = [{id:"Foo", text:"Foo"},{id:"Bar", text:"Bar"}] 

आपका आबादी कोड:

$('#selectElement').select2('data', data, true); 

होना चाहिए:

$('#selectElement').select2({data: data}); 

से उदाहरण Select2

var data = [ 
     { id: 0, text: 'enhancement' }, 
     { id: 1, text: 'bug' }, 
     { id: 2, text: 'duplicate' }, 
     { id: 3, text: 'invalid' }, 
     { id: 4, text: 'wontfix' } 
]; 

$(".js-example-data-array").select2({ 
    data: data 
}); 

<select class="js-example-data-array"></select> 
+1

यह उत्तर यहां सही और संक्षिप्त है। – Sphvn

+0

धन्यवाद, लेकिन मुझे AJAX से JSON प्राप्त होता है, इसलिए मुझे पहले चयन 2 प्रारंभ करने और बाद में पॉप्युलेट करने की आवश्यकता है ... क्या आप अपना कोड संपादित कर सकते हैं? –

+0

@jamesfray आपके चयन को पॉप्युलेट करने के लिए select2 के बिल्टिन AJAX फ़ंक्शन का उपयोग करने के बारे में क्या है? – Mivaweb

0

मैं सिर्फ Select2 सूची में एक समान प्रश्न पोस्ट और फिर वापस चला गया दीवार के खिलाफ मेरा सिर मारने के लिए। यही वह है जिसके साथ मैं आया: ("नष्ट" टिप जिसने मदद की थी)। सबसे पहले मैं चयन खाली करता हूं और फिर इसे रीसेट करता हूं।

$("#id_category").on('change', function(){ 
      var cat = $(this).val(); 
      var url = '/breeds/lookup/?q='+cat; 
      $.get(url, function(d){ 
       var idb = $("#id_breed").empty(); 
       idb.select2({data: d}); 
      }, "json"); 

     }); 
+1

आपकी प्रतिक्रिया के लिए धन्यवाद, लेकिन काम नहीं करता ... :(मैं निराश हूं (क्या आप इसे एक जेएसफिल्ड पर डाल सकते हैं? अजीब यह आपके लिए काम करता है –

0
$('#selectElement').select2({ 
       minimumInputLength: 1, 
       ajax: { 
        url: '@Url.Action("Search", "Home")', 
        dataType: 'json', 
        data: function(params) { 
       return { 
        ad: params.term 
       }; 
      }, 
      processResults: function(data) { 
       return { 
        results: $.map(data, function(obj) { 
         return { id: obj.Id, text: obj.Ad + " " + obj.Soyad }; 
        }) 
       }; 
      } 
      }); 
0

आप पूर्व लोड डिफ़ॉल्ट रूप से JSON के साथ ड्रॉप-डाउन दिखाने की कोशिश कर रहे हैं, तो जैसे ही आप मैदान पर क्लिक करें जिसे आप ड्रॉप-डाउन आबादी वाले डेटा के साथ दिखाने के लिए उम्मीद, एक में लिखे बिना एकल पत्र, सेट करें:

minimumInputLength: 0

और एक आकर्षण की तरह काम करता है। मुझे उम्मीद है कि आपकी समस्या हल हो गई है क्योंकि यह मेरा है :)

संबंधित मुद्दे