Jquery在Ajax成功中返回一些不需要的数据

时间:2013-03-23 05:40:18

标签: ajax ruby-on-rails-3 jquery

我使用Jquery这样的Ajax方法。

 function add_item()
 {
 item_name=$("#item_names").val()
 var pars = item_name;
 $.ajax({
            url: "/billing/add_bill_detail",
            type: "get",
            dataType: "html",
            data: {"pars" : pars},
            success: function(returnData){
            alert(returnData)
            $("#aaa").append(returnData).html;
            }
        });

}

如果我为returnData设置警报,则返回一些额外的数据。如下所示。

 <!DOCTYPE html>
 <html>
 <head>
 <title>SamplePro</title>

 <script src="/javascripts/jquery.js?1363935663" type="text/javascript"></script>
 <script src="/javascripts/jquery_ujs.js?1363935663" type="text/javascript"></script>
 <script src="/javascripts/application.js?1362549711" type="text/javascript"></script>
 <script src="/javascripts/jquery.js?1363935663" type="text/javascript"></script>
 <script src="/javascripts/application.js?1362549711" type="text/javascript"></script>
</head>
<body>

<tr class="tablehead">
 <td>
BAB-001
</td>
 <td>
BABY MASK 1
</td>
 <td>
 </td>
 <td>
     <input id="tax_rule_tax_rule" name="tax_rule[tax_rule]" size="30" type="text" value="sfdsf" />
 </td>
 </tr>
 </br>


</body>
</html>

但是文件add_bill_detail actutall包含

 <% if from != "reload" %>
 <tr class="tablehead">
 <td>
 <%=from ? item_details.item.item_code : ""%>
 </td>
  <td>
   <%=from ? item_details.item.name : ""%>
  </td>
 <td>
 </td>
   <td>
    <%= text_field 'tax_rule', 'tax_rule',:value => "sfdsf" %>
     </td>
  </tr>
 <%end%>
 </br>

请帮我删除不需要的数据。在此先感谢..

更新的问题:

我添加了以下脚本

 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
 <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
 <script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>

因为这个我的实际问题是..

enter image description here

这里add_bill_detail的所有值都在一列之下。它应该是4列。 enter image description here

更新了add_bill_detail代码..

 <table>
 <tr class="tablehead">
 <td>
 <%=from ? item_details.item.item_code : ""%>
 </td>
 <td>
 <%=from ? item_details.item.name : ""%>
 </td>
 <td>
 </td>
 <td>
    <%= text_field 'tax_rule', 'tax_rule',:value => "sfdsf" %>
</td>
<td>
    <%= text_field 'tax_rule', 'tax_rule2',:value => "vvvv" %>
</td>
</tr>
</table>

1 个答案:

答案 0 :(得分:0)

如果您想获取<tr class="tablehead">代码,只需使用.filter()方法。

alert($(returnData).filter('tr.tablehead').html())应该有效!

编辑:您使用的是tr标记而没有父table标记。因此,浏览器在呈现的HTML中忽略它们,浏览器剥离tr标记并仅显示文本。由于jquery在渲染的html上工作,它的行为是相同的。

修复:使用父tr标记包裹您的table代码,您应该好好去。

我的意思是:

<table>
    <tr class="tablehead">
     <td>
    BAB-001
    </td>
     <td>
    BABY MASK 1
    </td>
     <td>
     </td>
     <td>
         <input id="tax_rule_tax_rule" name="tax_rule[tax_rule]" size="30" type="text" value="sfdsf" />
     </td>
     </tr>
</table>

请注意包含table标记的tr标记。

以后如何避免此问题?

使用Chrome中的Inspect Element和Firefox中的Firebug等工具,始终检查呈现的HTML的外观。如果您为表格执行此操作,您会注意到浏览器会删除tr标记。