jQuery AJAX调用不会更新数据库

时间:2014-06-15 16:47:56

标签: php jquery

我一直在学习如何使用jQuery和AJAX更新数据库,因此您在提交内容时不需要刷新页面,但我有点卡住了。

这个例子很简单 - 你点击"接受"按钮,在数据库中,列"接受"更新为' 1'而不是' 0'。 jQuery函数似乎工作正常,但值不更新。我尝试从data: 'id='+id切换到JSON data: { id: data }方法,只使用.val()代替.serializeArray(),但似乎没有任何效果。有什么建议吗?

form.php的

<form id='acceptGoal' method='post'>
<input type='hidden' name='id' value='$gid'>
<input type='button' id='submit'>Accept?</button>
</form>
/* $gid is the unique identifier of each individual item to be accepted */

的script.js

$('#submit').click( function() {
    var data = $("#id").val();

    $.ajax({
        type: "POST",
        url: "accept.php",
        datatype: "json",
        data: { id: data }
        });
    });

accept.php

require 'core/initialize.php';
$query=$db->prepare("UPDATE goals SET accepted=:a WHERE id=:i");
$query->bindParam(":a", $a=1);
$query->bindParam(":i", $_POST['id']);
if ($query->execute()) {
    echo "Done";
    }
else {
    echo "Something went wrong.";
    }

1 个答案:

答案 0 :(得分:1)

首先,你最后有一个额外的逗号语法错误:

 $.ajax({
        type: "POST",
        url: "accept.php",
        datatype: "json",
        data: { id: data }, //<--------  Here is mistake 
        });

第二,您的隐藏字段会注明 id 属性,其值为 id

<input type='hidden' name='id' value='$gid'> // no id attribute in it while you accessing in jquery

当你访问它时:

var data = $("#id").val(); // this will return nothing as element with this id not exists

将其更改为:

<input type='hidden' id='id' name='id' value='$gid'>

你必须这样做:

$.ajax({
            type: "POST",
            url: "accept.php",
            datatype: "json",
            data: { id: data } 
            });

你应该添加成功并错误回调来检查ajax调用是否成功或发生错误:

$.ajax({
            type: "POST",
            url: "accept.php",
            datatype: "json",
            data: { id: data },
            success:function(response){
            alert(response);
            },
            error:function(response){
             alert("error");
            }  
            });