2010-05-26 3 views
0

한 나라의 모든 도시를 나열하는 데 jsonresult를 사용하고 있습니다. 데이터베이스에서 데이터를 검색하고 jquery를 사용하여 드롭 다운 목록에로드합니다. 문제는 도시가 3000을 넘어 서면 jsonresult가 작동하지 않는다는 것입니다.JsonResult의 문제점

<script type="text/javascript"> 
    $(document).ready(function() { 
    //Hook onto the MakeID list's onchange event  
    $("#Country").change(function() { 
     //build the request url 
     $("#HomeTown").empty(); 

     var url = '<%= Url.Content("~/") %>' + "Location/GetCitiesByCountry/" + $("#Country").val(); 

     $.getJSON(url, function (data) { 

      $.each(data, function (index, optionData) { 

       $("#HomeTown").append("<option value='" + optionData.geonameid + "'>" + optionData.asciiname + "</option>"); 

      }); 
      $("#HomeTown").option[0].selected = true; 
     }); 
    }).change(); 
    }); 
</script> 

답변

1

드롭 다운에 항목이 너무 많습니다.

항목을 제한하거나 자동 완성 컨트롤과 같은 다른 컨트롤을 사용하는 것을 고려하십시오.

+0

자동 완성 구현하기 –

+0

니스. 자동 완성 컨트롤은 정말 좋습니다. =) – RPM1984

0

3000은 드롭 다운 목록의 숫자가 너무 큽니다. 필요에 따라 페이지 결과에 서버와의 일종의 아약스 상호 작용을 고려해야합니다. jQuery DataTables plugin (또는 here과 같은 수의 유사한 옵션)과 같은 것이 좋은 시작이 될 것입니다. 이 중 일부는 단순화되어 시각적으로 드롭 다운 목록에 불과하지만 서버 쪽 페이징에는 도움이됩니다.

1

나는 @Ken에 동의한다. 당신이 할 수있는 것은 데이터의 점진적인로드입니다.

그래서 첫 번째 말 500에서로드 할 수 있고 그 중에는 jQuery를 사용하여 다음 500을로드 할 수 있습니다.

또는 이것을 조사해야 할 수도 있습니다. jQuery 드롭 다운을 사용하면 드롭 다운의 맨 아래에있을 때 다시 게시 할 수 있습니다.

하지만 최선의 방법은 드롭 다운에서 데이터의 양을 제한하는 것입니다.

0

로드가 느려지거나 충돌 할 가능성이 있다는 점 외에도 웹 페이지의 3000 항목 목록은 사용자 경험 측면에서보기에 좋지 않습니다. 드롭 다운 목록이 열려있을 때 페이지 크기를 상상해보십시오. 선택할 수있는 큰 목록을 제공하는 사이트로 되돌아 가지 않을 것입니다.

목록에 전체 3000 개의 도시가있는 대신 페이지를 게시하는 방법을 생각해보십시오. 위치 (국가/주 /도) 또는 이름 (알파벳순) 또는 귀하의 신청서에 적합한 기준에 따라 도시를 분류하십시오.