2016-08-03 3 views
0

이 JSON 데이터는 서버에서 가져옵니다. JASONlint 당 유효한 JSON입니다select2-4.0.3 JSON 데이터의 키로 값을 표시

문제는 내가 3 자리 숫자를 입력 할 때 (내가 가짜 임) 드롭 다운을 얻고 값으로 "키"를 표시합니다 !!! 나는 왜 그것이 역순으로 존재 하는지를 모른다. ??? 내가 .mac 대신 .map을 사용하면 값이 콘솔 로그의 값으로 올바르게 나열되지만 드롭 다운에는 아무 것도 표시되지 않습니다 (select2의 일부 오류가보고됩니다).

JSON (개똥 벌레)

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

이 내 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 
        } 
       }) 
      }; 
     } 
    } 
}); 

답변

1

문제가 map와 함께, 당신은 인수를 혼합 한 첫 번째 두 번째 핵심 가치입니다. 참조 http://api.jquery.com/jQuery.map/#jQuery-map-object-callback

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

고마워, 나는 깨달았다. 그러나 나는 그것이 .map (일반적으로 나는 값 앞에 열쇠라고 생각할 것이다)로 '자연스러운'할당이라는 것을 몰랐다. – rajeev

+0

ECMAScript5 때문에 Array.map의 콜백은 첫 번째 인수 값 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)을 가지고 있습니다. 따라서 비슷한 서명은 객체가 호환 될 수 있도록합니다. – Shrike

+0

내가 이런 종류의 json을 가지고 있다면? –