2011-12-23 13 views
2

私はいくつかのhtmlフォームを持つページを持っています。以下はajaxコールを介してフォームを送信するためのjqueryコードです。内容divが提出されます。フォームがajaxを介してリロードされた後でも起動します。ハンドラ関数にフォームデータを渡す方法がわかりません。 (本).serializeArray()は、動作していないFORMDATAフォームfiledsから値を取得していないJQuery Ajaxフォーム.on( "submit"、

$.ajaxSetup({ 
    url: "ajax.php", 
    type: 'POST', 
    contentType: "application/json; charset=utf-8", 
    datatype: 'json', 
    cache: false, 
    timeout : 5000 
}); 
$("#content").on("submit", function(e) { 
    e.preventDefault(); 
    var formData = $(this).serializeArray(); 
    $.ajax({ 
    data: formData, 
    success: function(jsonData) { 
     htmlData = jQuery.parseJSON(jsonData); 
     $.each(htmlData, function(id, data){ 
      $("#"+id).html(data); 
     }); 
    } 
}); 
}; 

UPDATE:

01。

私が変更した場合は

$("#content").on("submit", function(e) 

$("#content").on("submit", "form", function(e) 

にフォームデータをシリアライズすると、意図したようにAjaxの機能が動作します。新しい問題は、フォームが完了せず、(ajaxを介して)コンテンツ部門にリロードされた場合、サブミットイベントはもはやその関数をトリガーしなくなるということです。以前のバージョンのjqueryで.live()が機能するように.on()を設定しようとしていました。これは、ajaxのリロード後にsubmitイベントを再バインドします。この場合、.on()は再バインドされません。希望はある意味がある!

+0

私はあなたの説明から、間違って何が起こっているか理解していない、もう一度あなたの問題を説明してください。 –

+0

サーバーまたはクライアント(javascript/jquery)のデータにアクセスする方法を意味しますか? – Chibuzo

+0

$(これ)。シリアル化配列();フォームデータを取得していません。したがって、formDataには何もありません。 –

答えて

-1

渡された変数は、$ _POSTグローバルを通じてajax.phpに渡す必要があります。例えば

$myVar = $_POST['field_name'];

+0

これは問題ではありません。 ajax関数はフォームデータを取得してサーバーに送信していません。 –