2016-06-11 20 views
1

私はASP.NET Webフォームアプリケーションを作成しています。ページの1つに、JQuery .dialog()を使用して登録するためのモーダルフォームがあります。 ASP.NETには1つのページに1つのform要素しか含まれていないという制限があるため(私が作成したモーダルフォームにはDIVタグが使用されています)したがって、外部ラッパーDIVの名前は "register"です。ここではDIVコードだ:"JSON.stringifiy"はJSONの代わりにURLエンコードされたデータを返します

 <div id="register" title="New Member Registration"> 
     <div class="modalCaption"> 
      <span class="red">Fields in red</span> 
      <span>are required. Your information is not shared with anyone and is fully encrypted in our 
      database for your peace of mind.</span> 
     </div> 
     <br /> 
     <div class="row"> 
      <div class="row_label_red">Desired User Name :</div> 
      <div class="row_field"><input type="text" name="userName" size="32" MaxLength="32" /></div> 
     </div> 
     <div class="row"> 
      <div class="row_label_red">Your Email :</div> 
      <div class="row_field"><input type="text" name="email" size="32" MaxLength="64" /></div> 
     </div> 
     <div class="row"> 
      <div class="row_label_red">Password (6 char. min) :</div> 
      <div class="row_field"><input type="password" name="pwd" size="32" MaxLength="32" /></div> 
     </div> 
     <div class="row"> 
      <div class="row_label_red">Confirm Password :</div> 
      <div class="row_field"><input type="password" name="conPwd" size="32" MaxLength="32" /></div> 
     </div> 
     <div class="row"> 
      <div class="row_label">Your Last Name :</div> 
      <div class="row_field"><input type="text" name="lastName" size="32" MaxLength="64" /></div> 
     </div> 
     <div class="row"> 
      <div class="row_label">Your First Name :</div> 
      <div class="row_field"><input type="text" name="firstName" size="32" MaxLength="64" /></div> 
     </div> 
     <div class="row"> 
      <div class="row_label">ZIP/Postal Code :</div> 
      <div class="row_field"><input type="text" name="zip" size="10" MaxLength="10" /></div> 
     </div> 
     <div class="row"> 
      <div class="row_label">How Did You Hear About Us?</div> 
      <div class="row_field"> 
       <select name="about"> 
        <option Value="NONE" Selected>-- Please Choose One --</option> 
        <option value="News">News Article</option> 
        <option value="Google">Google Search</option> 
        <option value="Bing">Bing Search</option> 
        <option value="OtherSearch">Other Search Engine</option> 
        <option value="Friend">Friend's Referral</option> 
        <option value="Miscellaneous">Other</option> 
       </select> 
      </div> 
     </div> 
     <div class="row"> 
      <div id="spStatus"></div> 
     </div> 
    </div> 

(私はDIVの代わりformを使用することを抱えているので)フォームフィールドのデータをキャプチャするには、私は、JSONの名前/値のペアにデータをフォーマットするJSON.stringify()を使用しようとしています。これをテストするために、私は次のように使用しています:

var formData = JSON.stringify($.param($('#register').find(':input'))); 

var data = '{ "register": "' + formData + '"}"'; 
alert(data); 

私はこれをテストするとき、私はstringify()呼び出しの出力としてこれを取得:stringify()呼び出し、あなたが見ることができるよう

Output of web page

私にURLエンコードされたデータを提供しています。誰かが私が行方不明に何か助けを提供することはできますか?

+0

'$ .param'はURLエンコーディングを実行します。 – Barmar

+0

そのため、DIVの入力フィールドから値を抽出する手作業のコードを書く必要はなく、入力フィールドをJSONに変換するその他の方法はありますか?これを達成するために、どのようにコード行を書き直すことができますか? –

+0

なぜJSONに変換する必要がありますか? '$ .param()'によって返されたURLでエンコードされた結果を使用するだけです。 – Barmar

答えて

2

$.paramを使用しないで、すべての入力をURLエンコードされた文字列にシリアライズします。入力要素をループしてオブジェクトに入れ、JSONに変換します。

var formData = {}; 
$('#register').find(':input').each(function() { 
    formData[this.name] = this.value; 
}); 
var json = JSON.stringify(formData); 
+0

完了!それは動作します!私は本当にこれについてあなたの助けに感謝します**! –

+0

これで、Webサービスからこのエラーが発生しました。「無効なオブジェクトが渡されました。「:」または「}」が必要です。(20): " - これは何ですか? –

+0

投稿を行うために使用しているコードを確認する必要があります。また、私はASP.NETを知らないので、入力データとして期待していることにはほとんど慣れていません。 – Barmar

関連する問題