2016-08-15 8 views
0

こんにちは、私はASP.NET開発の初心者です.Jqueryを使用して正しいシリアル化フォームを取得できません。 you can see that asp hidden fields is attached to my serialize stringjqueryを使用してHTMLフォームをシリアライズできません

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
<script src="jquery-1.10.2.js" type="text/javascript"></script> 
<script src="jquery-1.10.2.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#button2").click(function() { 
      var form = $("#form1").serialize(); 
      alert(form); 

     }); 
    }); 
    </script> 
    </head> 
    <body> 
    <form id="form1" runat="server"> 
    <asp:TextBox ID="textbox1" runat="server"></asp:TextBox> 
    <asp:Button runat="server" ID="button2" Text="submit" /> 
    <div> 

    </div> 
    </form> 
    </body> 
    </html> 
+0

あなたは何を見たいですか? –

+0

@JasonP私はキーバリューのペアを期待していましたが、FormCollectionでそれらを受け取ったかったのですが、 "_VIEWSTATEを解析できませんでした"というエラーが表示されます –

答えて

1

フォームのシリアル化が正常に動作しているようです。フォームをname=valueペアのURL形式にシリアル化します。例えば、name=First%20Last&age=27

ASP.NETフォームを使用しているため、フォームには非表示の__VIEWSTATEフィールドがあります。だからあなたは__VIEWSTATE=SC20935uo236h2oth3li3h...を見ているのです。それはフォームがであるかの状態の追跡のためのASP.NET固有のメカニズムですので、あなたは、ビューステートを提出する必要はありません。

あなたはを除くすべての入力を選択するためにはJQueryを使って、直列化から__VIEWSTATEフィールドを除外することができます__VIEWSTATE

$('#form1').on('submit', function() { 
    var serializedFields = $('input[name!=__VIEWSTATE]', this).serialize(); 
    console.log(serializedFields); 
}); 

(これは、アラートを使用するよりもはるかに優れている)console.log()メッセージを表示するには、ブラウザのデベロッパーコンソール(Windowsの場合はCtrl + Shiftキー + J)を開きます。

これは__VIEWSTATEを除くすべてのフィールドを照会、その後、フォームのsubmitイベントを受け取ることによって動作します。フォーム提出イベントの内部にあるため、thisはフォームを参照するため、セレクタのコンテキストとして渡します。したがって、$('...', this)です。

+0

このようにVIEWSTATEGENERATORもできますか? –

+0

はい、複数の属性チェックを行うには、セレクタでコンマを使用してください。 '[...]、[...]' – Soviut

+0

ほとんど。カンマの前後の引用符を閉じるべきではありません。 '' input [name!= __ VIEW STATEGENEROR]、inp ut [name!= __ VIEWSTATE] '' – Soviut

関連する問題