2012-10-09 41 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')得到你想要的表。

相关问题