У меня есть всплывающее диалоговое окно простого модального jQuery, которое собирает информацию о адресе, которую мне нужно передать в код после сохранения в базу данных после входа пользователя в нее. Я искал сотни примеров и в настоящее время находится в нижнем пункте, но, кажется, независимо от того, что я делаю, созданная строка JSON показывает «undefined» для всех полей, которые я пытаюсь передать. Мое заключение заключается в том, что метод, который я использую для построения строки JSON в jQuery, неверен, но после многих и различных способов сделать это никто из них не работает. Я попытался получить доступ к полям по id, но классу и, как показано ниже, по идентификатору, используя различные способы. Вот фрагменты кода. Может ли кто-нибудь увидеть, где я ошибся?Получение значений диалогового окна JQuery для устранения проблем
<script type="text/javascript">
$(function() {
$('#dialog').dialog({
draggable: true,
resizeable: false,
autoOpen: false,
height: 700,
width: 550,
modal: true,
top: 0,
left: 0,
title: 'Edit Information',
buttons: {
'Save': function() {
$('#ibSaveInfo').click();
},
'Cancel': function() {
$(this).dialog('close');
}
}
}).parent().css('z-index', '1005');
});
$(document).on("click", "#ibSaveInfo", function() {
var inputArray = new Array;
var idx = 0;
inputArray[idx] = 'Address1:' + $("#dialog").find("#txtAddress1").val();
idx++;
inputArray[idx] = 'Address2:' + $("#txtAddress2").val();
idx++;
inputArray[idx] = 'city:' + $("txtcity").val();
etc, etc
var inputArrayList = "{ inputArray: " + JSON.stringify(inputArray) + "}";
$.ajax({
type: "POST",
dataType: "json",
contentType: "application/json",
url: "Address.aspx/SaveInfo",
data: inputArrayList,
success: function (data) {
//debugger;
if (data.d.indexOf("Error") != -1) {
}
else {
$("#ResultLabel").show();
$("#ResultLabel").text("Sum of all the contents is: " + data.d);
}
},
error: function (e, ts, et) {
//debugger;
alert(ts);
}
}); //ajax func end
});
$(document).ready(function() {
$("#ibEdit").click(function (e) {
$('#dialog').dialog('option', 'position', [e.pageX + 10, e.pageY + 10]);
$('#dialog').dialog('open');
});
});
<div id="dialog" style="padding-left: 10px; padding-bottom: 15px;">
<asp:TextBox runat="server" ID="txtAddress1" ClientIDMode="Static" />
<asp:TextBox runat="server" ID="txtAddress2" ClientIDMode="Static" />
<asp:TextBox runat="server" ID="txtCity" ClientIDMode="Static" />
etc, etc
</div>
только что заметил, что вы используете текстовые поля asp. Я опустил свой ответ ниже. Asp контролирует изменение своего идентификатора при запуске проекта, обязательно используйте обычные текстовые поля, если вы не получаете доступ к значениям со стороны сервера. – MorningDew