Как правильно загрузить comboBox с помощью jQuery и AJAX?Я как-то испортил - PullRequest
0 голосов
/ 16 марта 2012

Я делаю что-то глупое. Я пытаюсь заполнить поле со списком в диалоге с продуктом вызова AJAX, используя jQuery. Легко, правда?

Вот создание диалога и т. Д .:

<script type="text/javascript"> 
$(document).ready(function() {       
  var $dialog = $("#projDialog").dialog({ 
     open: function () { 
          $(this).load("projectdialog.jsp");              
     }, 
     autoOpen: false, 
     title: 'Project Management', 
     width: 500, 
     height: 300, 
     modal:true 
     }); 
  $dialog.css('font-size', 12); 
  $("#projects").click(function() {    
     $.getJSON("getProjects.html", function(result) {       
        $.each(result, function() { 
           alert(this); 
           $("#existingProject").append($("<option />").val(this).text(this)); 
        });  
     }); 
     $dialog.dialog('open');   // prevent the default action, e.g., following a link 
     return false; 
  });       
});    
</script>

И вот div, который входит в диалог jQuery:

<div id="projDialog" title="Project Management"> 
  <p>Select an existing project:</p> 
  <form action="manageProjects.html" method="post"> 
     <select name="existingProject"></select> 
     <br /> 
     <p>Or create a new one:</p> 
        New Project Name: <input type="text" name="newProjName" /><br />       
     <br/> 
     <input type="submit" value="Submit" /> 
  </form> 

Итак, я ожидаю, что когда я нажму на «проекты» сущности HTML, она должна открыть диалоговое окно и выполнить «getJSON», возвращая «результат» объекта.

Я застрял в предупреждении (это), чтобы показать мне, что вернулось. Работает.

Я использовал добавление к #existingProject, которое является именем поля со списком, которое я хочу заполнить.

Так озадачите меня так: как я могу получить предупреждение, чтобы получить ожидаемый результат (единственное строковое значение «Test» в данный момент), но он не добавляется в comboBox? Все, что я получаю, это пустой комбинированный список, который я вижу в отладчике Chrome JS.

Не является ли $ ("# существующий проект") неправильным селектором jQuery? Кажется, здесь была бы полезна ошибка (я вижу тему) вместо того, чтобы молча игнорировать мои любительские попытки ...

[EDIT] По запросу, возвращение JSON - это ОЧЕНЬ простая коллекция строк для имен проектов. На данный момент существует только один проект с именем «Тест».

[
"Test"
]

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Дополнительно, это также может быть полезно для вас: раскрывающийся список jquery с данными json

Там это используется для добавления:

.appendTo('#existingProject');

Это было бы так, если вы используете

<select id="existingProject"></select>
1 голос
/ 16 марта 2012

Ваш селектор ищет идентификатор, который не существует, измените селектор на

   $('select[name="existingProject"]')

Или еще лучше добавить идентификатор элемента, чтобы использовать тот же селектор, который у вас уже есть. Селекторы ID более эффективны

 <select id="existingProject" name="existingProject"></select> 
...