2016-03-25 13 views
0

私はJQueryによって提出されたフォームを持っています。フォームの送信が失敗すると、フォーム内の値が自動的にクエリ文字列としてurlに追加されます。私は多くを検索しましたが、この奇妙な行動で何かを見つけることができません。ここでは何が起こるかの例があります。フォームの検証と提出のための二つのフィールドURLに値を追加するフォーム

$("#MyForm").validate({ 
 
     rules: { 
 
      "UserName": { 
 
       required: true 
 
      }, 
 
      "Password": { 
 
       required: true, 
 
       minlength: 8 
 
      } 
 
     }, 
 
     messages: { 
 
      "UserName": { 
 
       required: "UserName is required" 
 
      }, 
 
      "Password": { 
 
       required: "Password is required" 
 
      } 
 
     }, 
 

 

 
     submitHandler: function() { 
 
     var userName = $("#UserName").val(); 
 
     var password = $("#Password").val(); 
 
     var myObject = {UserName:userName, Password: password} 
 
      $.post('/MyAuthenticationUrl',myObject,function(){ 
 
      //Redirect to Home page on success 
 
      }); 
 
     }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="myForm" action="/MyUrl"/> 
 
    <input type="text" id="UserName" /> 
 
    <input type="password" id="Password"/> 
 
    <input type="submit" id="Submit"/> 
 
<form>

とフォームがあり

は、私は時々私が提出する上でクリックしたときにJqueryValidation.org

からJqueryValidationプラグインを使用し、 userNameとpasswordはクエリー文字列に追加されます。

あなたはhttp://localhost/Home/IndexのようなURLを持っているのであれば、それは、私はそれがJqueryValidationプラグインで何かを持っている疑いがあるが、私は問題のページhere

+2

フォームタグに 'method =" post "を追加してみてください。 – GentlemanMax

+0

エラーが発生したらコンソールをチェックしてください。エラーメッセージが表示されるはずです。 –

+0

@GentlemanMaxしかし、プラグインは、フォームの送信時にデフォルトの動作を妨げ、正しい場合はajaxメソッドを使用します。 –

答えて

1
に関連する何かを見つけることができませんでした http://localhost/Home/Index/?UserName=blah&Password=blah

なり

あなたは明らかにjQuery Validateプラグインを適切にインクルードして初期化していないので(OPには含まれていません)、フォームをaction属性のURLに送信するだけです。

報告された問題は、タグ内にmethod="post"属性を持たない(非Ajax)フォーム送信のデフォルトの動作について説明しています。デフォルトでURLにクエリ文字列が追加されています。

これは、jQueryのValidateプラグインとは関係ありません。

submitHandler: function() { 
    var userName = $("#UserName").val(); 
    var password = $("#Password").val(); 
    var myObject = {UserName:userName, Password: password} 
    $.post('/MyAuthenticationUrl',myObject,function(){ 
     //Redirect to Home page on success 
    }); 
} 

プラグインが壊れているので、submitHandlerが場に来ていませんが(含まれていない、JavaScriptエラー、など)これが行く限り


...。しかし、あなたの意図は、フォームを提出するには.post()を使用し、"Redirect to Home page on success"を使用するように思われます。私はこの点を理解していません。別のURLにリダイレクトする場合は、ajaxは必要ありません。action属性のURLを使用すれば、フォームは自動的に送信され、このURLに自動的にリダイレクトされます。 submitHandlerをすべて取り出すと、このデフォルトの動作に戻ります。

あなたのマークアップ...

<input type="text" id="UserName" /> 
<input type="password" id="Password"/> 

は、jQueryの検証プラグインを使用するには、MUSTは、検証のために考えられて任意のフィールド上name属性を持っています。

<input type="text" name="UserName" id="UserName" /> 
<input type="password" name="Password" id="Password"/> 

これには例外も回避策もありません。プラグインが内部的にさまざまな要素を追跡する方法です。


最後に、あなたはあなたの質問はでタグ付けされています。 ASPでは、jQuery Validateプラグインは、付属のUnobtrusive Validationプラグインによって自動的に初期化されます。この場合、.validate()メソッドを直接呼び出すことはできません。邪魔されない検証プラグインは、HTMLマークアップのデータ属性に基づいて.validate()を自動的に構築して呼び出します。 jQuery Validateプラグインは.validate()の最初のインスタンスのみを使用し、それ以降の呼び出しはすべて無視します。

.validate()への電話を外して確認してください。何も変わらなければ、ASPの組み込みの妥協の検証によってオーバーライドされていたか、最初は完全に壊れていたかを知ることができます。

関連する問題