2017-03-23 3 views
1

Wo ist der Fehler?select2 zeigt die von ajax empfangenen Ergebnisse nicht an

Meine select2 Box zeigt keine Ergebnisse von ajax Aufruf, es heißt - Die Ergebnisse konnten nicht geladen werden.

Hier ist mein Code:

HTML:

<select class="airportList form-control" name="From_1"> 
<option disabled selected>Going from</option> 
</select> 

JS:

$(function() { 
    $(".airportList").select2({ 
    minimumInputLength: 1, 
    // data: [{id:'ADL',text:'Adelaide, Australia, ADL'},{id:'MEL',text:'Melbourne, Australia, MEL'}], 
    ajax: { 
     type: "GET", 
     url: "data.php", 
     dataType: 'json', 
     delay: 250, 
     data: function (params) { 
     return { 
      q: params.term, // search term 
      page: params.page 
     }; 
     }, 
     processResults: function (data) { 
     return { 
      results: data 
     }; 
     } 
    } 
    }); 
}); 

data.php (die ich erhalten):

[ 
{id:'ADL',text:'Adelaide, Australia, ADL'}, 
{id:'MEL',text:'Melbourne, Australia, MEL'} 
] 
+0

Was ist select2()? Eine benutzerdefinierte Funktion, wie es scheint? Wenn Sie den Ajax-Aufruf machen, können Sie das Ergebnis mit etwas anderem als oprocessResults wie '.always (function (response) { console.log (Antwort [0] .id)}) anzeigen.' –

+0

Select2 ist ein bekanntes JS-Plugin Hinzufügen von Multiselect-Eingabefeldern –

+0

Nein, 'select2()' ist eine Funktion von 'select2' [Projekt] (https://select2.github.io/). Ich habe nicht verstanden, wie man das Ergebnis "console.log" versteht. Ich sehe, dass das Ergebnis der Anfrage zum Browser kommt, aber es scheint, als ob es von der Funktion nicht richtig ausgeführt wird. –

Antwort

2

Sorry, hier ist eine aktualisierte Antwort:

processResults: function(data) { 
    return { 
    results: $.map(data, function(obj) { 
     return { 
     id: obj.id, 
     text: obj.text 
     }; 
    }) 
    }; 
} 

Dieser Teil ist, wo Sie das Problem haben, denke ich. Sehen Sie folgendes Beispiel: http://jsfiddle.net/jes0wrka/

+0

In meinem Fall, wenn das Ergebnis zurückgegeben wird, wurde diese Funktion nicht einmal aufgerufen. –

0

So ist das Problem in meinem Fall war, dass das Format der JSON von data.php Datei war FALSCH !!!:

[ 
{id:'ADL',text:'Adelaide, Australia, ADL'}, 
{id:'MEL',text:'Melbourne, Australia, MEL'} 
] 

Die richtige JSON sollte sein:

[ 
{"id":"ADL","text":"Adelaide, Australia, ADL"}, 
{"id":"MEL","text":"Melbourne, Australia, MEL"} 
] 
Verwandte Themen