2016-10-30 2 views
0

Select2를 사용하고 있습니다. 4.0.3 내 서버에서 반환 된 json을 드롭 다운 목록에 옵션으로 표시하려고 시도했지만 드롭 다운 또는 검색을 열면 결과가 나타나지 않습니다. 해당 영역에서.select2 서버에서 select2 결과가 표시되지 않습니다.

[{"Text":"My Student","Id":3}] 

내가 드롭 다운 때 입력 A "를 검색 결과를 찾을 수"를 받고 없습니다 해요 :

<body> 
    <select class="select2-student form-control"> 
    </select> 
</body> 

<script> 
    $(document).ready(function() { 
     $(".select2-student").select2({ 
      ajax: { 
       url: "/MyUrl", 
       data: function (params) { 
        return { 
         text: params.term 
        }; 
       }, 
       processResults: function (data, params) { 
        return { 
         results: data 
        }; 
       } 
      } 
     }); 
    }); 
</script> 

나는 일치하는 텍스트를 입력 할 때 서버에서 예상대로 다시 반응을 얻고있다 문자열이 서버 측 기준과 일치하지 않는 경우 (즉, "텍스트"필드에있는 것과 일치하지 않는 경우) 결과가 반환되면 드롭 다운이 나타나지 않으며 아무 것도 표시되지 않습니다. 브라우저에서 오류가 발생했습니다.

나는이 코드에 대해 하루 종일 여러 가지 변형을 시도했지만 아직 작동하지 못했습니다. 조언?

답변

0

동일한 문제가있는 사용자를위한 업데이트 : 게시 후 곧바로 무슨 일이 벌어 졌는지 알아 냈습니다. 서버에서 돌아 오는 JSON은 낙타의 경우가 아니므로 Select2가 올바르게 읽지 않았습니다. 올바른 형식은 다음과 같아야합니다.

[{"text":"My Student","id":3}] 

바보 같이 돌아가지만, ASP.NET은 기본적으로이 방법으로 형식을 지정하지 않습니다. this question에서 JsonCamelCaseResult 클래스를 사용하기 시작했는데 완벽하게 작동했습니다.

0

나는이 꽤 오래된 질문을 알고 있지만, 그것을 할 수있는 더 좋은 방법은 다음과 같이 할 것 : 걱정하지 않고,

  processResults: function(data) { 
       return { 
        results: jQuery.map(data, function(item) { 
         return { 
          id: item.key, 
          text: item.value 
         } 
        }) 
       }; 
      }, 

그냥 매핑 된 객체의 표준 집합을 반환 할 수 있습니다 그 방법을 모든 케이스에 대해.

관련 문제