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

Проблема в том, что после обратной передачи я не могу установить список обратно на выбранный элемент, который использует выбранный перед нажатием кнопки Отправить.

Как я могу установить выбранный элемент в раскрывающемся списке, чтобы быть выбранным элементом?

var selectedApp = $('#selectedApplication').val(); $.getJSON("/ApplicationSettings/Applications/List", function(data) { var items = "{amp}lt;option{amp}gt;----------- Select Application to Configure ----------{amp}lt;/option{amp}gt;"; $.each(data, function(i, application) { items  = "{amp}lt;option value='"   application.Value   "'{amp}gt;"   application.Text   "{amp}lt;/option{amp}gt;"; }); $("#Applications").html(items); }); 

Вы можете изменить внутреннюю часть each них так:

 items  = "{amp}lt;option value='"   application.Value   "' "   (selectedApp === application.Text ? "selected" : "" )   "{amp}gt;"   application.Text   "{amp}lt;/option{amp}gt;"; 

Предполагая, что selecteApp содержит текстовое значение. В противном случае используйте application.Value для сравнения.

Ваша конечная точка ajax возвращает выбранное состояние каждого параметра? Потому что, если я что-то упустил, на этом этапе сервер должен знать, какой вариант был выбран

Прямо сейчас, похоже, ваш JSON выглядит так

 [ {"Value": 1, "Text": "One"} , {"Value": 2, "Text": "two"} // etc ] 

Просто измени это

 [ {"Value": 1, "Text": "One", "Selected": false} , {"Value": 2, "Text": "two", "Selected": true} // etc ] 

И сделать ваш обратный вызов использовать значение соответствующим образом

 $.each(data, function(i, application) { var selected = application.Selected? ' selected' : ''; items  = "{amp}lt;option value='"   application.Value   "'"   selected   "{amp}gt;"   application.Text   "{amp}lt;/option{amp}gt;"; }); 

Благодарность!
Это то, что я в итоге делал.

 $.getJSON("/ApplicationSettings/Applications/List", function(data) { var items = "{amp}lt;option{amp}gt;----------- Select Application to Configure ----------{amp}lt;/option{amp}gt;"; $.each(data, function(i, application) { var selected = (application.Value == selectedApp) ? 'selected' : ''; items  = "{amp}lt;option value='"   application.Value   "'"   selected   "{amp}gt;"   application.Text   "{amp}lt;/option{amp}gt;"; }); $("#Applications").html(items); });