我一直在尝试使用AJAX发布数据,这将更新我的数据库中的字段但是我无法这样做。一切似乎应该运行正常,我在控制台没有错误,但我不知道为什么我的数据库不会更新。
有人可以帮助我吗?
AJAX
:
function ajaxUpdate() {
var arr = {var1: name, var2: age};
$.ajax({
url: 'ajax/confirm.php',
type: 'POST',
data: JSON.stringify(arr),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function(data) {
console.log("success");
}
});
}
Confirm.php
:
$name=$_POST['var1'];
$age=$_POST['var2'];
if($name == "Stuart") {
mysqli_query($connection,"UPDATE people SET age='$age'");
}
else if($name == "Peter") {
mysqli_query($connection,"UPDATE people SET age='$age'");
}
与我的数据库的连接正在进行,因为我已经$connection
设置并转到浏览器中的页面/ajax/confirm.php
,我在控制台中看到“连接成功”,因为我定义成功。
所以我不确定为什么这不更新?
我的值是否未正确发布?
我是AJAX的新手,请原谅我这是非常简单的事情!
由于
答案 0 :(得分:1)
尝试以下方法:
function ajaxUpdate() {
var arr = {var1: name, var2: age};
$.ajax({
url: 'ajax/confirm.php',
type: 'POST',
data: arr,
success: function(data) {
console.log("success");
}
});
}
不是将对象转换为json字符串而是按原样发送。
修改:同时删除dataType
,也可能删除contentType
。您的代码存在SQL注入风险。查看预准备语句并转义mysql
数据。
答案 1 :(得分:0)
也许这很有帮助。
<script type="text/javascript">
function ajaxUpdate() {
var data = $('#formID').serialize();
$.ajax({
url: 'ajax/confirm.php',
type: 'POST',
data: data,
dataType: 'json',
encode : true,
success: function(data) {
if(data == "ok"){
console.log("success");
}else{
console.log(data);
}
}
});
}
</script>
<强> confirm.php 强>
<?php
$name = $_POST['name'];
$age = $_POST['age'];
switch ($name) {
case 'Stuart':
$sql = "UPDATE people SET age = ? WHERE name = ? ";
$stmt = mysqli_prepare($connection, $sql);
mysqli_stmt_bind_param($stmt, 'si', $name, $age);
if (mysqli_stmt_execute($stmt)) {
echo json_encode('ok');
} else {
echo json_encode(mysqli_stmt_error($stmt));
}
break;
case 'Peter':
$sql = "UPDATE people SET age = ? WHERE name = ? ";
$stmt = mysqli_prepare($connection, $sql);
mysqli_stmt_bind_param($stmt, 'si', $name, $age);
if (mysqli_stmt_execute($stmt)) {
echo json_encode('ok');
} else {
echo json_encode(mysqli_stmt_error($stmt));
}
break;
default:
echo json_encode('Unknown name ');
}