2012-10-09 84 views
0

通過jQuery提交後,我有這樣的結構如何獲得最接近的表格形式使用給ajaxForm

<table> <tr><td><form> .........<input type="submit"/> </form> </td></tr></table> 

我使用jquery這樣

var options = { 
      target:  '.ajaxMessage', // target element(s) to be updated with server response 
      // beforeSubmit: showRequest, 
      dataType: 'json', // pre-submit callback 
      success:  function(data){ myResponse(data)}, 

      cache: false, 
      delegation: true, 
      type: 'POST' }; 

      $(".r_form").ajaxForm(options); 

一切都通過AJAX提交表單的形式工作罰款,但成功後,我想附加行到最近的表格提交表單。

我不知道該怎麼做this點,當我在myresponse使用()函數成功

+0

在這種情況下,'this'指的是ajax響應,也就是'data'。您是否在點擊事件中擁有此代碼? – Johan

+0

yes點擊按鈕 – user825904

+0

看看我的回答 – Johan

回答

0

假設你有以下標記:

<table> 
    <tr> 
     <td> 
      <form class="r_form" method="post" action="..."> 
       <input type="submit"/> 
      </form> 
      <div class="ajaxMessage"></div> 
     </td> 
     <td> 
      <form class="r_form" method="post" action="..."> 
       <input type="submit"/> 
      </form> 
      <div class="ajaxMessage"></div> 
     </td> 
     ... 
    </tr> 
</table> 

,你可以在你的document.ready處理程序這樣做是爲了AJAXify這些形式:

var options = { 
    success: function(data, statusText, xhr, form) { 
     var ajaxMessage = $(form).closest('td').find('.ajaxMessage'); 
     ajaxMessage.html(data); 
    } 
}; 
$('.r_form').ajaxForm(options); 

正如documentation的第四個參數解釋success回調將表示相應的表單DOM元素,它可以用於查找包含<td>(或<tr>,具體取決於ajaxMessage元素位於何處)以及來自那裏發現.ajaxMessage div被更新。

+0

檢查這個小提琴控制檯感謝哥們,完美的工作。 – user825904

0

一些僞代碼,應該讓你在正確的軌道上後:

$('input:submit').click(function(e){ 

    var $target = $(e.target); 

    var $closestTable = $target.closest('table'); 

    $closestTable.append('<tr><td>blah</td></tr>'); //this line could be added to the success handler 
}); 
0

「的這所有回調中的引用是在設置中傳遞給$ .ajax的上下文選項中的對象;如果未指定上下文,則這是對Ajax設置本身的引用。

來源:http://api.jquery.com/jQuery.ajax/

好像你可以通過它通過context觸發Ajax調用的對象,然後用.closest('table')得到你想要的表。

相關問題