2013-08-21 29 views
0

我想送過來阿賈克斯形式,但其找出在這種情況下,正確的語法一些問題。阿賈克斯選擇和發送一個表單中動態

我有一個具有通過一個Ajax請求添加到它的形式的對象,然後一些模板追加到頁面之前發生在頁面上一個div容器。我使用此代碼的那一刻:

$('.summary-host').on('click', '.btnUpdate', function (event) { 
    var form = this.form; 
    $(this.form).ajaxForm({ 
     type: 'post', 
     success: function (data) { 
      $(".printArea").empty().append(data).css('visibility', 'visible'); 
     } 
    }); 
}); 

.summary-host是容器和我試圖掛鉤的.btnUpdate發佈形式。當我點擊按鈕時,它會彈出var form = this.form;行,但表單從未提交過,並且Firebug控制檯中沒有任何錯誤可以給我提供任何有關錯誤的線索。

我如何獲得這些表格正確提交?

我使用的方法.on()按我的理解,這將確保jQuery的附着添加到容器以及現有表單對象任何新對象。

回答

1

我想您正在使用「jQuery的表格插件」

首先你需要定義「給ajaxForm」準備好文件。然後定義「.btnUdate」 click事件,並在使用jQuery提交表單提交()方法

,而不是this.form嘗試使用格式ID(給ID以表格)

$(document).ready(function() { 
     $('#formId').ajaxForm({ 
      type: 'post', 
      success: function (data) { 
      $(".printArea").empty().append(data).css('visibility', 'visible'); 
     } 
     }); 

     $('.summary-host').on('click', '.btnUpdate', function (event) { 
      $('#formId').submit(); 
     }) 
    }); 

如果你不知道formId那麼你可以使用jQuery父()方法

$(document).ready(function() { 

    $($('.btnUpdate').parent()).ajaxForm({ 
     type: 'post', 
     success: function (data) { 
      $(".printArea").empty().append(data).css('visibility', 'visible'); 
     } 
    }); 

    $('.summary-host').on('click', '.btnUpdate', function (event) { 
     $('.btnUpdate').parent().submit(); 
    }); 
}); 

讓我知道,如果這有助於

+0

這裏的問題是,形式的ID是不能始終提供'$(文件)。就緒()發佈的形式'的形式動態加載。 – Jammer

+0

好的,如果你沒有表單ID,那麼你可以通過使用btnUpdate類和Jquery parent()的幫助來定位表單。假設btnUpdate類元素在Form中,所以你可以使用$('。btnUpdate')。parent()方法(User .parent()直到找到Form元素)。我已經更新了父代方法定位表單元素的代碼 – mujaffars

0

您需要使用提交事件時,它提交表單。點擊事件只會捕獲點擊.btnUpdate,但不會對錶單執行任何操作。在提交表單使用AJAX

$('.summary-host').on('submit', '.btnUpdate', function (event) { 
+0

這只是最終提交表單以正常方式,而不使用Ajax。使用'click'不使用Ajax的方法 – Jammer

1

,也許這可以幫助你:

$.post(page_url,$(my_form).serialize(), 
    function (data) { 
     // do something here 
}); 
  1. PAGE_URL - 鏈接在這裏您將數據提交
  2. $(my_form) - 標識您的表單標記如 <form id="submit_form"></form>將是$("#submit_form")
  3. .serialize() - 一個jQuery函數,它以標準URL編碼表示法創建字符串在這個環節更多信息http://api.jquery.com/serialize/

,你可以這樣做:

$('.summary-host').on('click', '.btnUpdate', function (event) { 

      $.post(page_url,$(my_form).serialize(), 
        function (data) { 
        // do something here 
      }); 
});