0

我在表单页面的查询字符串上有一些值。当我使用提交按钮提交表单时,我可以获得查询字符串值,但是当我使用 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

4

6 回答 6

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"])
于 2013-08-05T01:45:57.180 回答
1

尝试这个

$(function()
{

    function  ValidateData() {
             if (some conditions) {
                return true;
             }
             else {             
                return false;
             }
          }
});

HTML 更改

 <input type="submit" id="submitBt" value="Recover Password" onClick="return ValidateData();" />
于 2013-08-05T02:46:22.953 回答
1

查询字符串参数可使用 JavaScript 的位置对象的搜索属性,即location.search. 从那里您可以在提交功能中使用它。

例如http://somesite.com/?querystringParam1=someVal&querystringParam2=someOtherVal

location.search将等于 ?querystringParam1=someVal&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();
             }
          });
})();
于 2013-08-05T02:40:17.103 回答
0
$('#PasswordResetForm').submit(function (e) {
    e.preventDefault();
    if (some conditions) {
        this.submit();
    }
    else {             
        return false;
    }
});
于 2013-08-05T01:57:02.177 回答
0

也使用.on clickjquery的事件监听器,比如

$('#PasswordResetForm').on('click', function() { 
   //code here.....
});

附加知识。:)

于 2013-08-05T02:04:51.170 回答
-1

这没有任何意义:

$('#PasswordResetForm').submit(function () {
   $('#PasswordResetForm').submit();
}

因为你再次提出了这个事件。

你只需要返回true,即:

$('#PasswordResetForm').submit(function () {
   if (cond)
      return true;
   return false;
}

http://api.jquery.com/submit/

于 2013-08-05T02:43:13.707 回答