JQuery отправить форму и запрос строки вопроса
У меня есть некоторые значения в строке запроса на странице формы. Когда я сам отправляю форму с помощью кнопки "Отправить", я могу получить значения строки запроса, но когда я отправляю форму, используя jquery, как показано ниже. Я не вижу значения строки запроса больше. Я что-то путаю?
$('#PasswordResetForm').submit(function () {
if (some conditions) {
$('#PasswordResetForm').submit();
}
else {
return false;
}
});
ссылка примерно такая:
http://websitename/Account/PasswordReset/?username=username&token=ZnsHnVh3oIOwOR2GUaGfsA2
HTML-код, как показано ниже:
@using (Html.BeginForm("PasswordReset","Account",FormMethod.Post,new
{id="PasswordResetForm"}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary("", new { id = "validation" })
<fieldset>
<legend ">Enter your User Name</legend>
<br />
<table id="MainTable" border="0">
<tr class="MainTr">
<td class="FirstTd">
@Html.Label("User Name")
</td>
<td class="SecondTd">
</td>
</tr>
<tr class="MainTr">
<td class="FirstTd">
New Password
</td>
<td class="SecondTd">
@Html.Password("newPassword")
</td>
</tr>
<tr class="MainTr">
<td class="FirstTd">
Confirm New Password
</td>
<td class="SecondTd">
@Html.Password("confirmNewPassword")
</td>
</tr>
<tr class="MainTr">
<td colspan="2">
<input type="submit" id="submitBt" value="Recover Password" />
</td>
</tr>
</table>
</fieldset>
}
Я больше не вижу токен на сервере. когда я использую jquery для отправки формы. Я использую MVC 4 и JQuery 2.0.0
6 ответов
Попробуй это
$(function()
{
function ValidateData() {
if (some conditions) {
return true;
}
else {
return false;
}
}
});
HTML изменения
<input type="submit" id="submitBt" value="Recover Password" onClick="return ValidateData();" />
Параметры строки запроса доступны с помощью свойства поиска объекта местоположения JavaScript, т.е. location.search
, Оттуда вы можете работать с этим в вашей функции отправки.
например, http://somesite.com/?querystringParam1=someVal&querystringParam2=someOtherVal
location.search
будет равно? querystringParam1 = someVal & querystringParam2 = someOtherVal
Если вам нужна строка запроса в.NET, такая как NameValueCollection, я написал быструю JSFiddle, http://jsfiddle.net/nickyt/NnyV2/5/
(function() {
function getQuerystringAsNameValueCollection(querystring) {
var querystringKeyValuePairs = querystring.split('&');
var querystringHashTable = {};
for (var index = 0; index < querystringKeyValuePairs.length; index++) {
var keyValue = querystringKeyValuePairs[index].split('=');
querystringHashTable[keyValue[0]] = keyValue[1];
}
}
$('#PasswordResetForm').submit(function (e) {
var querystring = getQuerystringAsNameValueCollection(location.search.substring(1));
if ("token" in querystring) { // Do more checks on the token if necessary
$('#PasswordResetForm').submit();
}
else {
e.preventDefault();
}
});
})();
Используйте следующий код:
$('#PasswordResetForm').submit(function () {
if (some conditions) {
this.submit();
}
else {
return false;
}
});
призвание $('#PasswordResetForm').submit();
снова вызывает ту же функцию. Не оборачивайте это как объект jquery.
Сохраните строки запроса, задав строки запроса как скрытые элементы:
@Html.Hidden("username", Request.QueryString["username"])
@Html.Hidden("token", Request.QueryString["token"])
Используйте также .on
click
слушатель событий jquery, как
$('#PasswordResetForm').on('click', function() {
//code here.....
});
Дополнительные знания:)
$('#PasswordResetForm').submit(function (e) {
e.preventDefault();
if (some conditions) {
this.submit();
}
else {
return false;
}
});
Это не имеет никакого смысла:
$('#PasswordResetForm').submit(function () {
$('#PasswordResetForm').submit();
}
Потому что вы снова поднимаете событие.
Вам просто нужно вернуть true, т.е.
$('#PasswordResetForm').submit(function () {
if (cond)
return true;
return false;
}