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"])

Используйте также .onclick слушатель событий 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;
}

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

Другие вопросы по тегам