2013-03-01 18 views
5

Ecco come appare la stringa JSON restituita dalla mia pagina coldfusion: [{"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 afferma che tutto funziona perfettamente, ma nessuno dei dati compare nel plugin select2.select2 ajax non visualizzerà dati json restituiti

Qualcuno sa quale potrebbe essere il problema? Dovrebbe essere il ritorno dei nomi delle colonne o qualcosa del genere?

select2 chiamata:

$(".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

i dati devono di formato '[{" text ":" Asante "," id ": 12}, ...]' altrimenti devi passare '{risultati: dati, testo: 'client'}' –

risposta

6

i dati devono formato [{"text":"Asante","id":12}, ...] altro è necessario passare {results: data, text: 'client'}

6

Se la stringa JSON ha bisogno di usare qualcosa di diverso "text": "something" allora ecco la roba aggiunto necessario: utilizzare formatResults per far apparire i dati. Ecco la versione fissa:

$(".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; 
    } 
}); 

Altrimenti Arun è giusto che non vi resta che utilizzare il formato [{"id":1,"text":"client"}]

1

sì è troppo vecchio :) ma ho avuto bisogno oggi e risolto in questo modo (usando Symfony2):

$opts = []; 

foreach($items as $item) 

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

return new JsonResponse($opts); 

i 'risultati' chiave è importante

Problemi correlati