2013-04-19 4 views
11

ich den folgenden Code haben, die Daten über AJAX sollteSelect2 keine Daten über AJAX bekommen

$('#Organisation').select2({ 
    ajax: { 
     url: AppURL + 'Organisations/Manage/SearchByName/', 
     dataType: 'json', 
     quietMillis: 100, 
     data: function (term) { 
      return { 
       term: term 
      }; 
     }, 
     results: function (data) { 
      return { 
       results: data 
      }; 
     } 
    } 
}); 

mit Select2 bekommen Wenn ich auf Antrag aussehen Webinformationen zu verwenden, wenn ‚O‘ Suche ich:

[{"label":"Organisation 1","ID":2},{"label":"Organisation 2","ID":1}] 

Irgendwelche Ideen, was ich falsch mache? Ich würde etwas inkorrekt in der Ergebnisfunktion vermuten.

Der Fehler, den ich bekommen ist: Uncaught TypeError: Cannot call method 'toUpperCase' of undefined

+0

können Sie die JSON-Antwort-Struktur ändern –

Antwort

33

$('#Organisation').select2({ 
    ajax: { 
     url: 'data.json', 
     dataType: 'json', 
     quietMillis: 100, 
     data: function (term) { 
      return { 
       term: term 
      }; 
     }, 
     results: function (data) { 
      var results = []; 
      $.each(data, function(index, item){ 
      results.push({ 
       id: item.ID, 
       text: item.label 
      }); 
      }); 
      return { 
       results: results 
      }; 
     } 
    } 
}); 

Demo Versuchen: Plunker

+0

Dies ist ein sehr nützliches Beispiel. Mein Problem löste sich nach 4 Stunden Suche. Vielen Dank –

4

Andere als obige Lösung Sie eine Sache tun können, statt

folgende json Rückkehr [{"label":"Organisation 1","ID":2},{"label":"Organisation 2","ID":1}]

Rückkehr dieses

[{"text":"Organisation 1","id":2},{"text":"Organisation 2","id":1}]

vor dem gleichen Problem, und dies bei einigen Lösungen nach einem Blick von anderen vorgeschlagen herausgefunden.