我在表单页面的查询字符串上有一些值。当我使用提交按钮提交表单时,我自己可以获取查询字符串值,但是当我使用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
答案 0 :(得分:1)
使用以下代码:
$('#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"])
答案 1 :(得分:1)
使用JavaScript的位置对象的搜索属性(即location.search
)可以使用查询字符串参数。从那里,您可以在提交功能中使用它。
e.g。 http://somesite.com/?querystringParam1=someVal&querystringParam2=someOtherVal
location.search
会等于吗?querystringParam1 = someVal&amp; querystringParam2 = someOtherVal
如果在像NameValueCollection这样的.NET中需要查询字符串,我写了一个快速的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();
}
});
})();
答案 2 :(得分:1)
试试这个
$(function()
{
function ValidateData() {
if (some conditions) {
return true;
}
else {
return false;
}
}
});
HTML更改
<input type="submit" id="submitBt" value="Recover Password" onClick="return ValidateData();" />
答案 3 :(得分:0)
$('#PasswordResetForm').submit(function (e) {
e.preventDefault();
if (some conditions) {
this.submit();
}
else {
return false;
}
});
答案 4 :(得分:0)
还可以使用jquery的.on
click
事件监听器,如
$('#PasswordResetForm').on('click', function() {
//code here.....
});
其他知识。 :)
答案 5 :(得分:-1)
这没有任何意义:
$('#PasswordResetForm').submit(function () {
$('#PasswordResetForm').submit();
}
因为你再次举起活动。
你只需要返回true,即:
$('#PasswordResetForm').submit(function () {
if (cond)
return true;
return false;
}