2016-08-03 22 views
0

Ich habe diese JSON-Daten vom Server. was ist gültig JSON pro JASONlintselect2-4.0.3 Anzeigen von Werten als Schlüssel in JSON-Daten

Problem ist, wenn ich 3 Ziffern eingeben (irgendetwas falsches) Ich bekomme die Dropdown und es zeigt "Schlüssel" als Werte !!! Ich weiß nicht, warum es in umgekehrter Reihenfolge ist ??? Wenn ich .each anstelle von .map verwende, listet es Werte korrekt als Werte auf (im Konsolenprotokoll), zeigt dann aber nichts im Dropdown (einige Fehler in select2 js werden gemeldet).

JSON: (Firebug)

{"4":"2013","3":"2014","1":"2016","6":"winter","7":"birthday","2":"2015","5":"summer","8":"vacation" 
} 

das ist mein JS:

$("#selectTags").select2({ 
    tags: true, 
    multiple: true, 
    allowClear: true, 
    //closeOnSelect: false, 
    tokenSeparators: ',',  // [' ',','], 
    minimumInputLength: 3, 
    ajax: { 
     url: "/cgi-bin/json-data.pl", 
     dataType: 'json', 
     delay: 100, 
     data: function (params) { 
      var queryParameters = { 
       term: params.term 
      } 
      return queryParameters; 
     }, 
     processResults: function (data) { 
      return { 
       results: $.map(data, function (key,value) { 
        console.log('key='+key); 
        return { 
         id: key, 
         text: value 
        } 
       }) 
      }; 
     } 
    } 
}); 

Antwort

1

das Problem mit map ist, haben Sie Argumente vermischt, ist der erste Wert, der zweite Schlüssel ist.

processResults: function (data) { 
     return { 
      results: $.map(data, function (value, key) { 
       console.log('key='+key); 
       return { 
        id: key, 
        text: value 
       } 
      }) 
     }; 
    } 
+0

ich sehe. Danke, das habe ich gemerkt, aber ich wusste nicht, dass es die "natürliche" Zuweisung mit .map ist (normalerweise würde ich Schlüssel vor Wert annehmen). – rajeev

+0

es ist wegen ECMAScript5 Array.map Rückruf hat ersten Argument - Wert (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map). Die gleiche Signatur ist also für Objekte, die kompatibel sein sollen. – Shrike

+0

Was ist, wenn ich diese Art von Json habe. –