Jquery ajax发布了错误的数据

时间:2010-02-18 20:24:15

标签: jquery sql ajax post

我有一张表格:

<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的情况下进行了测试,它运行正常。一定有一些东西缺失。它没有发布正确的值。花了几天时间试图解决它。

3 个答案:

答案 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);

在帖子之前价值是否错误?