после того, как пользователь изменит элемент select, который инициирует обратную передачу пакета обновления, я пытаюсь установить значение этого же выбора для выбранного значения после завершения обратной передачи, но каким-то образом значение значения, установленного в скрытое поле теряется после обратной передачи.Как сохранить переменные javascript после обратной передачи обновления?
function countrypostback() {
$('#countryid').val($('select[name="countryselect"]').val());
__doPostBack('upnlSearch', '');
}
$(document).ready(function() {
$.ajax({
type: "GET",
url: "/service.svc/countries/",
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
for (var i in msg) {
var resultitems = '<select onchange="countrypostback();" class="textbox" name="countryselect" id="countryselect">';
for (var i in msg) {
if (msg[i].name != '') {
resultitems += '<option value="' + msg[i].value + '">' + msg[i].name + '</option>';
}
}
resultitems += '</select>';
$('#countryselect').html(resultitems);
}
}
});
//here I'm trying to set the value of the dropdown to the value that was selected before the postback
$("#countryselect").val($('#countryid').val());
<input type="hidden" id="countryid" name="countryid" />
<asp:UpdatePanel ID="upnlSearch" runat="server">
<ContentTemplate>
<span id="countryselect"></span>
</ContentTemplate>
</asp:UpdatePanel>
Я попытался размещением скрытого поля CountryId как снаружи, так и внутри UpdatePanel, но это не делает разницы, я до сих пор пустое поле формы, когда я пытаюсь получить доступ к нему через
$('#countryid').val()
I скорее всего, не будет работать с viewstate (если это вообще возможно), так как это увеличит значение pageload.
тьфу asp.net кошмар, я ненавидела обновления панели и неустановленных Visual Studio и их другие дрянные "инструменты". Причина заключается лишь в том, что при вызове обратной передачи вы не можете отслеживать значение, если оно не сохраняется в cookie или сеансе. не уверен, как переопределить панели обновлений или, если можно, то, что я сделал бы, это избавиться от реалистичной реализации ajax от Microsoft и создать свой собственный, используя jQuery AJAX. –