2011-08-11 8 views
1

私はHTMLフォームを使用している場合、のは言わせて...フォームを送信せずにフォームと共に送信される*フォームデータを取得する方法はありますか?

<form id='myform'> 
    <input type='hidden' name='x' value='y'> 
    <input type='text' name='something' value='Type something in here.'> 
    <input type='submit' value='Submit'> 
</form> 

...そして私は、例えば、フォームの送信イベントに応答するためにjQueryのを使用します

$('#myform').submit(function() { 
    ... 
    return false; 
}); 

は今、私が代わりに実際に(新しいページなど)、「伝統的な」方法でそれを提出するのAJAX呼び出しとしてフォームを送信するとします。私は$.post()に渡すことができる送信されるデータを含むJSオブジェクトを取得する簡単な方法はありますか?上記の例では、次のようになります。

{ 
    x: 'y', 
    something: 'Type something in here.' 
} 

または私は自分自身を焼く必要がありますか?

答えて

2

serialize()の方法を参照してください。

$('#myform').submit(function() { 
    jQuery.ajax({ 
     url: this.action, 
     type: this.method, 
     data: $(this).serialize(), 
     success: function() { 
      // 
     } 
    }); 

    return false; 
}); 
+0

これはJSオブジェクトではなく文字列を生成します。その文字列を '$ .post()'に渡すことは可能ですか? – Timwi

+0

@ティムウィ:jQuery.post(this.action/* url * /、$(this).serialize()、/ * callback * /) 'は可能です。返されるオブジェクトを得るために最も近いのは、['serializeArray()'](http://api.jquery.com/serializeArray)を使うことです。エンコードされたフォーム要素の配列を返します。 – Matt

2

すでにjQueryを使用しているので、jQuery.serialize()を使用してください。

$('#myform').submit(function() { 
    var $form = $(this); 
    var data = $form.serialize(); 
    // ... 
}); 
+0

これは、JSオブジェクトではなく文字列を生成します。その文字列を '$ .post()'に渡すことは可能ですか? – Timwi

+0

はい、ただ2番目の引数 '$。post(url、data、callback);として渡します。 – BalusC

関連する問題