我正在尝试将JSON对象发送到.php文件。令我烦恼的是我的POST值似乎没有进入PHP的$ _POST数组。这是我的代码:
jQuery的:
$("#submit").click(function(){
var obj = { //create json object to be sent
"name": $("#name").val(),
"email": $("#email").val(),
"r1": $("#r1").val(),
"r2": $("#r2").val(),
"r3": $("#r3").val(),
"intr1": $("#q1").val(),
"intr2": $("#q2").val(),
"intr3": $("#q3").val(),
"set": "set1"
};
var jsonObj = JSON.stringify(obj);
$.post(
"updateAnswers.php",
jsonObj,
function() {
//location.href = 'set2.php';
}
);
})
PHP:
if (isset($_POST["jsonObj"])) { // value is empty
$obj = json_decode($_POST['jsonObj'], true);
$name = $obj['name'];
$email = $obj['email'];
$db = mysqli_connect("localhost", "root", "", "concurs");
$sql="INSERT into players values ('$name', '$email', '0', '0', '0')";
mysqli_query($db, $sql);
}
提前致谢!
答案 0 :(得分:0)
您在obj上使用stringify,然后将其传递给ajax函数。
但是ajax函数期望对象作为对象而不是字符串。
因此,只需删除var jsonObj = JSON.stringify(obj);
,然后使用obj
更进一步,你必须检查
在您的php脚本中而不是jsonObj
,因为这就是php从您的脚本中实际获得的内容
答案 1 :(得分:0)
obj
进行字符串化 - 尝试将obj
直接传递给$.post
函数。$.post("updateAnswers.php", obj, function() {
//location.href = 'set2.php';
});
name
,email
,r1
等等将直接位于$_POST
数组中..因此您需要访问$_POST['name']
等等。echo "Name: ". $_POST['name']; //Show name value
var_dump($_POST); //Show all passed values
$sql
字符串不检查SQL注入。您必须(至少)用两个单引号替换单引号,如: $sql = "INSERT into players values ('".str_replace("'","''", $name). "', '".str_replace("'","''", $email). "', '0', '0', '0')";
答案 2 :(得分:0)
这与AJAX()发送:
$.ajax({
type: 'POST',
url: 'updateAnswers.php',
data: {'jsonObj': jsonObj},
success: function(msg) {
alert(msg);
}
});