我有一张表格:
<form id="deletesubmit" style="display:inline" >
<input style="width:50px" type="text" id="delcustomerid" name="delcustomerid" value="'.$row['customersid'].'">
<button type="submit" class="table-button ui-state-default ui-corner-all" title="delete"><span class="ui-icon ui-icon-trash"></span></button>
</form>
表单获取客户ID并将其作为值插入。它表明正确的客户是为了那一行一切都很好。然后,当我通过ajax以某种方式发布表单时,它会发布不同行的id。这是脚本:
$("form#deletesubmit").submit(function () {
var delcustomerid = $('#delcustomerid').attr('value');
$.ajax({
type: "POST",
url: "delete/process.php",
data: "delcustomerid=" + delcustomerid,
success: refreshTable
});
return false;
});
});
最后这里是php发布表单:
<?php include("../../config/config.php"); ?>
<?php
$deleteid = htmlspecialchars(trim($_POST['delcustomerid']));
mysql_send("DELETE FROM customers where id='$deleteid'");
?>
我在没有ajax的情况下进行了测试,它运行正常。一定有一些东西缺失。它没有发布正确的值。花了几天时间试图解决它。
答案 0 :(得分:4)
使用attr('value')
,您可能会提取原始值,而这可能不是您想要的;请改用.val()
。此外,您可以更轻松地设置呼叫:
$("form#deletesubmit").submit(function() {
var delcustomerid = $(this).find('#delcustomerid').val();
$.post( "delete/process.php", { delcustomerid: delcustomerid }, refreshTable );
return false;
});
最后,通过查看生成的HTML的来源,确保您的PHP输出正确的id
。
另外,在PHP中:不要使用htmlspecialchars
来逃避mysql。由于这应该是一个整数,你可以使用int
:
$deleteid = (int) trim($_POST['delcustomerid']);
mysql_send("DELETE FROM customers where id='$deleteid'");
请注意,数组(如果有人将deleteid[]=
传递到此页面)将评估为1
。因此,要么在其中构建测试,要么确保在该表中没有id
= 1。
答案 1 :(得分:2)
我只是建议使用.val()方法。如果还没有,还要安装firebug。它将允许您准确查看您要发布到服务器的内容。
答案 2 :(得分:0)
在$ .ajax之前的代码中发出警告({like so:
alert(delcustomerid);
在帖子之前价值是否错误?