2013-03-01 21 views
5

Hier ist, wie die Json-Zeichenfolge aussieht, die von meiner Coldfusion-Seite zurückgegeben wird: [{"client":"Asante","id":12},{"client":"City of Lancaster","id":14},{"client":"Massey Energy","id":35},{"client":"Northeast Utilities","id":68},{"client":"Washtenaw","id":50}]. Firebug behauptet, alles funktioniert perfekt, aber keine der Daten erscheint im select2-Plugin.select2 ajax zeigt keine json-Daten an

Weiß jemand, was das Problem sein könnte? Sollte es Spaltennamen oder etwas zurückgeben?

select2 Aufruf:

$(".select").select2({ 
    allowClear: true, 
    blurOnChange: true, 
    openOnEnter: false, 
    ajax: { 
     url: "/surveymanagement/admin/client.cfc", 
     dataType: 'json', 
     data: function (term, page) { 
      return { 
       method: "GetClientsByName", 
       name: term 
      }; 
     }, 
     results: function (data, page) { 
      return { results: data }; 
     } 
    } 
}); 
+1

Ihre Daten müssen von Format '[{" text ":" Asante "," id ": 12}, ...]' sonst müssen Sie '{result: data, text: 'client'}' übergeben –

Antwort

6

Ihre Daten müssen von Format [{"text":"Asante","id":12}, ...] Sie sonst {results: data, text: 'client'}

6

Wenn Ihr JSON-String etwas anderes als "text": "something" verwenden muss passieren müssen hier ist dann die zugegebene Material benötigt: formatResults verwenden um die Daten anzuzeigen. Hier ist die feste Version:

$(".select").select2({ 
    allowClear: true, 
    blurOnChange: true, 
    openOnEnter: false, 
    ajax: { 
     url: "/surveymanagement/admin/client.cfc", 
     dataType: 'json', 
     data: function (term, page) { 
      return { 
       method: "GetClientsByName", 
       name: term 
      }; 
     }, 
     results: function (data, page) { 
      return { results: data }; 
     } 
    }, 
    formatResult: function (data) { 
     return "<div class='select2-user-result'>" + data.client + "</div>"; 
    }, 
    formatSelection: function (data) { 
     return data.client; 
    } 
}); 

Ansonsten Arun ist richtig, dass Sie nur das Format [{"id":1,"text":"client"}]

1

verwenden müssen, ja, es ist zu alt :) aber ich brauchte es heute und gelöst es wie folgt (unter Verwendung von Symfony2):

$opts = []; 

foreach($items as $item) 

    $opts['results'][] = ['text' => $item->getXyz(), 'id' => $sk->getId()]; 

return new JsonResponse($opts); 

die wichtigsten 'Ergebnisse' ist wichtig