我需要将ajax请求结果放到现有表中,怎么做?这是我的ajax请求
$("input#order").click(function(){
var idmenu = $("#idmenu").val();
var menu = $("#idmenu :selected").text();
var qty = $("#qty").val();
$.ajax({
type :'POST',
url :'<?php echo base_url();?>index.php/welcome/process',
data :'idmenu='+idmenu+'&menu='+menu+'&qty='+qty,
beforeSend:function(){
$("#result").html('<img src="<?php echo base_url();?>assets/loading.gif"/>');
},
success:function(result){
//result is json format
}
});
});
这是来自ajax请求的json格式
{"itemname":"product1","qty":"3","prices":"4500"}
这是我的表格格式
<table class="list-order">
<tr>
<th class="order">order</th>
<th class="qty">qty</th>
<th class="pice">price</th>
</tr>
//how to append ajax result here
<tr>
<td colspan="2"></td>
<td align="right"><input type="submit" size="25" id="process" value="Proses"/></td>
</tr>
</table>
我想追加来自ajax的结果,如
<tr>
<td></td>
<td></td>
<td></td>
</tr>
并且不在标记内,例如
<tr>
<td>result is not here</td>
</tr>
最终结果看起来像这个
<table class="list-order">
<tr>
<th class="order">order</th>
<th class="qty">qty</th>
<th class="pice">price</th>
</tr>
<!-- result look like this -->
<tr>
<td>product1</td>
<td>2</td>
</td>4500</td>
</tr>
<!-- end result-->
<tr>
<td colspan="2"></td>
<td align="right"><input type="submit" size="25" id="process" value="Proses"/></td>
</tr>
</table>
答案 0 :(得分:5)
如果不知道JSON的确切格式,很难给出明确的答案。但是,假设您有一个表示行的JSON对象数组,则需要迭代该数组,并为每个对象执行以下操作:
<tr>
元素 - var $tr = $('<tr/>');
<td>
有一个项目),创建一个<td>
元素并设置其内容 - var $td = $('<td/>').html(x.y)
(x
是您当前的对象, y
是对象中的字段,然后将其附加到行 - $tr.append($td);
。$('.list-order tr:last').before($tr);
根据问题中提供的其他信息,以下代码应该执行您需要执行的操作:
success: function(result) {
//result is json format
var $tr = $('<tr/>');
$tr.append($('<td/>').html(result.itemname));
$tr.append($('<td/>').html(result.qty));
$tr.append($('<td/>').html(result.prices));
$('.list-order tr:last').before($tr);
}
答案 1 :(得分:0)
在你的ajax成功函数中:
success:function(result){
//create new tr
var $tr = $('<tr>');
//extract value from result and put in tr
$tr.html(result.someVal);
//find first <tr> and append new tr after it
$('table.list-order tr:first').after($tr);
}