jQuery AJAX脚本没有触发

时间:2013-02-07 02:40:16

标签: php jquery ajax pdo

我有以下似乎没有触发的AJAX脚本。有人可以告诉我它有什么问题吗?

form.php的

<script type = "text/javascript"> $(document).ready(function () {
    $('#updatebtn1').click(function () {
        $('#result1').show('slow').delay(4000).hide('slow')
        $.post('process.php', $('#updateform1').serialize())
    });
});
</script>

<form id="updateform1">
    <div class="tbl_header">Timetable Support Website</div>Due Date:
    <script>
        $(function() {
            $("#datepicker1").datepicker({
                minDate: -0,
                dateFormat: 'dd/mm/yy',
                maxDate: new Date(2013, 1, 22)
            })
        });
    </script>
    <input type="text" id="datepicker1" style="width: 100px;
            height: 10px;" value="18/02/2013" name="duedate" />&nbsp; Status:
    <select style="width: 125px;" name="status">
        <option>Pending</option>
        <option>----</option>
        <option>Pending</option>
        <option>In Progress</option>
        <option>Complete</option>
    </select>&nbsp;
    <input type="hidden" name="id" value="1">
    <input type="button" id="updatebtn1" value="Update" style="width: 100px;"
    class="pmbtn" />
</form>
<div id="result1" style="display: none; color: red">Update successful!</div>

process.php

<?php
$duedate = $_POST["duedate"];
$status = $_POST["status"];
$id = $_POST["id"];

$sql = "UPDATE pm_schedule SET duedate=?, status=?, id=? WHERE id=?";
$q = $pdo->prepare($sql);
$q->execute(array($duedate,$status,$id));
?>

1 个答案:

答案 0 :(得分:1)

我不太熟悉位置占位符(我总是使用命名占位符),但我假设你需要做

$q->execute(array($duedate,$status,$id,$id)); 

因为$id被使用了两次。 MySQL不知道你想要的最终占位符。这可能会导致占位符计数不匹配的某种错误。

尝试将此添加到数据库句柄:

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

然后将process.php的输出回显到主页面。