Я пишу приложение ASP.NET Web Forms, и на одной из страниц у меня есть модальная форма для регистрации, которая использует JQuery .dialog()
для ее отображения. Из-за ограничений в ASP.NET, что страница может содержать только один элемент form
(главная страница содержит, конечно,), модальная форма, которую я создал, использует теги DIV
. Таким образом, внешняя оболочка DIV называется «register». Вот код DIV:«JSON.stringifiy» возвращает URLEncoded данные вместо JSON
<div id="register" title="New Member Registration">
<div class="modalCaption">
<span class="red">Fields in red</span>
<span>are required. Your information is not shared with anyone and is fully encrypted in our
database for your peace of mind.</span>
</div>
<br />
<div class="row">
<div class="row_label_red">Desired User Name :</div>
<div class="row_field"><input type="text" name="userName" size="32" MaxLength="32" /></div>
</div>
<div class="row">
<div class="row_label_red">Your Email :</div>
<div class="row_field"><input type="text" name="email" size="32" MaxLength="64" /></div>
</div>
<div class="row">
<div class="row_label_red">Password (6 char. min) :</div>
<div class="row_field"><input type="password" name="pwd" size="32" MaxLength="32" /></div>
</div>
<div class="row">
<div class="row_label_red">Confirm Password :</div>
<div class="row_field"><input type="password" name="conPwd" size="32" MaxLength="32" /></div>
</div>
<div class="row">
<div class="row_label">Your Last Name :</div>
<div class="row_field"><input type="text" name="lastName" size="32" MaxLength="64" /></div>
</div>
<div class="row">
<div class="row_label">Your First Name :</div>
<div class="row_field"><input type="text" name="firstName" size="32" MaxLength="64" /></div>
</div>
<div class="row">
<div class="row_label">ZIP/Postal Code :</div>
<div class="row_field"><input type="text" name="zip" size="10" MaxLength="10" /></div>
</div>
<div class="row">
<div class="row_label">How Did You Hear About Us?</div>
<div class="row_field">
<select name="about">
<option Value="NONE" Selected>-- Please Choose One --</option>
<option value="News">News Article</option>
<option value="Google">Google Search</option>
<option value="Bing">Bing Search</option>
<option value="OtherSearch">Other Search Engine</option>
<option value="Friend">Friend's Referral</option>
<option value="Miscellaneous">Other</option>
</select>
</div>
</div>
<div class="row">
<div id="spStatus"></div>
</div>
</div>
Для сбора данных полей формы (так как мне приходится использовать DIV
вместо form
), я пытаюсь использовать JSON.stringify()
для форматирования данных в JSON пар имя/значение. Чтобы проверить это, я использую следующее:
var formData = JSON.stringify($.param($('#register').find(':input')));
var data = '{ "register": "' + formData + '"}"';
alert(data);
Когда я проверить это, я получаю это как выход из stringify()
вызова:
Как вы можете видеть, stringify()
вызова дает мне URL-кодированные данные, которые не то, что мне нужно или действительно ожидалось. Может ли кто-нибудь предложить какую-то помощь здесь, на то, что мне не хватает?
'$ .param' выполняет кодировку URL. – Barmar
Таким образом, без необходимости писать кучу ручного кода для извлечения значений из полей ввода содержащего DIV, есть ли какой-либо ДРУГОЙ способ преобразования входных полей в JSON? Как я могу переписать эту строку кода для этого? –
Зачем вам нужно конвертировать его в JSON? Просто используйте результат с URL-кодировкой, возвращаемый '$ .param()'. – Barmar