2016-08-11 8 views
0

Ich brauche Namen von Städten in einer ComboBox Select2 über Ajax herunterladen, aber bis jetzt hat es nicht funktioniert. viele Beispiele in der Internetsuche, aber auch nicht verstehen.Ajax select2 Beispiel

$(document).ready(function() { 
    var url = "http://localhost:8000/api/city?"; 
    $("#city").select2({ 
     minimumInputLength: 1, 
     ajax: { 
      url: url, 
      dataType: 'json', 
      type: "GET", 
      delay: 500, 
      data: function (term) { 
      return { 
       city: term 
      }; 
     }, 
     results: function (data) { 
      console.log(data); 
      return { 
       results: $.map(data, function (item) { 
        return { 
         text: item.text, 
         id: item.id 
        } 
       }) 
      }; 
     } 
    } 
}); 
}); 

y este es el código json que devuelve mi servidor con la Consulta realizada:

[{ "id": 1, "text": "Capital, Córdoba, Argentina" }] 

Dice "Searching ...." y luego

Wirklich "Keine Ergebnisse gefunden", Vielen Dank!

+0

Ich vermisse SO in meiner Muttersprache :-( – randominstanceOfLivingThing

+0

cud jemand übersetzen in Englisch. – Iceman

+0

"und das ist der Json, dass mein Server mit der fertigen Abfrage (nicht sicher über den letzten Teil)" ... "es sagt Suche ... und dann Keine Ergebnisse gefunden " – Greg

Antwort

-1

Wenn Sie Select2 Version 4+ verwenden, stellen Sie sicher, dass Sie select2() auf einem <select> Element initialisieren oder dass viele seiner Funktionen wie AJAX deaktiviert sind.

Select2 wird bei einer formated Antwort vom Server benötigen:

[ 
    {id:1,text:'city1'}, 
    {id:2,text:'city2'}, 
] 

Die Optionen: minimumInputLength = 0, wird es die ganze Liste laden, indem Sie Ihren Server zurück http://localhost:8000/api/city?

Antwort sollte wie folgt aussehen Klicken Sie auf minimumResultsForSearch, steuern Sie, wie viele Ergebnisse Sie benötigen, um das Suchfeld in der select2-Liste anzuzeigen.

ajax{data: function(param)} die Funktion aufgerufen, um die Benutzerdaten in etwas zu formatieren Sie Ihre Server verstehen, kehren Sie hier, was Ihre {ajax:url}

ajax{processResults: function (data, status)}, genannt senden ist dies, wenn Sie eine erfolgreiche Antwort vom Server erhielt Ajax, data wird die Antwort von Ihrem Server Dies ist die letzte Möglichkeit, die Sie sicherstellen müssen, dass data wie selected2 formatiert ist, siehe oben in diesem Beitrag. Was Sie hier zurückgeben, wird an select2 gesendet.

Ich hoffe, es hilft!