在多个实例时使用PHP AJAX更新表记录

时间:2012-04-21 20:25:35

标签: php javascript mysql ajax

在我的页面上,我有多个表格,与此相同......

<form class='bill-upd'>
   <input type='hidden' value='".$info['rand']."' name='rand2' id='rand2'>
   <input type='hidden' value='".$info['id']."' name='billid' id='billid'>
   Total <input type='text' id='total' name='total' /><br />
   Bill name<input type='text' id='bill-name' name='bill-name' /><br />
   bill descriptiion <input type='text' id='bill-description' name='bill-description' /><br />
   bill colour<input type='text' id='bill-colour' name='bill-colour' />
   <input type='button' value='submit' onClick='updateBill();' />
</form>  

然后我将我的AJAX作为

function updateBill()
{
    $.post('update_bill.php', $('.bill-upd').serialize(), 
        function(data) {
        $(this).append(data);
    });
};

如果我的页面上有一个表单,这样可以正常工作,但是当有多个实例时,我的同一记录被覆盖,有人可以告诉我哪里出错吗?

由于


在@Armatus和@Bricriu的帮助下,我把它排序了,答案标记为有效,愚蠢地忘了把它包装在document.ready

2 个答案:

答案 0 :(得分:1)

您需要一种方法来指定您要更新的帐单,否则它只会占用所有帐单。这应该有效,因为我们可以通过单击哪个按钮来确定它是哪一个。

编辑:我个人会使用jQuery绑定偶数,而不是onClick元素本身:

$(".bill-upd input:submit").click(function(){
    var elem = $(this);
    $.post('update_bill.php', elem.parent('.bill-upd').serialize(), 
        function(data) {
        elem.append(data);
    });
});

答案 1 :(得分:0)

如果其他表单具有相同的类.bill-upd,则javascript .serlialize()也会从中获取值。确保其他表单具有备用类。

如果您为表单提供了id="billform"这样的唯一ID,然后将$('.bill-upd').serialize()替换为$('#billform').serialize(),那会更好。

希望这有帮助。

编辑:

使用此:

$(this).parent('.bill-upd').serialize() 

序列化被点击的父项。