2010-03-01 2 views
2

Я новичок в Javascript, JSON и jQuery. Поэтому, пожалуйста, успокойся. У меня есть страница JSP, содержащая выпадающий список. Содержимое выпадающего списка заполняется при загрузке страницы. Я написал сервлет, который возвращает содержимое выпадающего списка в виде карты и преобразует его в строку JSON и отправляет обратно в jsp через response.getWriter().write(json); Однако у меня возникают проблемы с возвратом результата со стороны jsp и заполнением содержащий выпадающий список из результата. Вот мои кодыДинамически сгенерировать содержимое списка Drop Down через jQuery

customer.jsp

$(document).ready(function(){ 
      getCustomerOption('customer');//try to pre-populate the customer drop down list 
    }); 
    function getCustomerOption(ddId){ 
      var dd = $('#' + ddId); 
      $.getJSON("http://localhost:8080/WebApps/DDListJASON", function(opts) { 
       $('>option', dd).remove(); // Remove all the previous option of the drop down 
       if(opts){ 
        $.each(opts, function(key, value){ 
          dd.append($('<option/>').val(key).text(value)); 
        } 
       } 
      }); 
    } 

down where the drop down list is generated

<select id="customer" name="customer"> 
<option></option> 
</select> 

Результат ничто получить заселенных в список. Так грустно

+0

Только что обновил коды. Сейчас это правильно. –

ответ

4

Я думаю, что вы призываете неправильную функцию в документе готовой

не должен» t это

getInitialOption('customer'); 

вместо

getCustomerOption('customer'); 
+0

Я могу быть самым глупым ребенком в этом мире –

0

Вы можете добавить дополнительные <option> элементы к <select> с кодом:

$("#selectID").append("<option>" + text + "</option>"); 

см: JQuery Docs

0

Я не понимаю, $ («»), но я не уверен, что это проблема либо, трудно сказать точно.

Я знаю, что это будет быстрее, если вы создадите список опций в памяти, а затем добавьте их с помощью .html (options), а не добавьте их по одному. Это может также облегчить понимание, чтобы построить html по одной строке за раз, а затем добавить его.