我一直在学习如何使用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.";
}
答案 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");
}
});