我想使用Ajax将JS变量发送到PHP页面,以便我可以将这些变量保存在数据库中。但是,它并没有像我预期的那样工作。 我的JS代码:
var a= payment;
var b= count_days;
var c= <?php echo $teacher_id; ?>;
var jsonString1 = JSON.stringify(a);
var jsonString2= JSON.stringify(b);
var jsonString3= JSON.stringify(c);
$.ajax({
type: "POST",
url: "student_searching_availibility.php",
data: {
data1 : jsonString1,
data2:jsonString2,
data3:jsonString3
},
cache: false,
success: function() {
alert('success');
}
});
现在我的PHP
$data1 = json_decode($_POST['data1']);
$data2 = json_decode($_POST['data2']);
$data3 = json_decode($_POST['data3']);
include "db.php";
$sql2= "INSERT INTO availibility_status_date(student_id,teacher_id,status) VALUES ('$data1','$data2','$data3')";
if(!mysqli_query($con,$sql2)){
die("error". mysqli_connect_error());
}
我在这里搜索了几乎所有这些查询,但仍然无法解决问题。
答案 0 :(得分:0)
JSON是javascrip对象符号你不能JSON.stringify一个变量,它必须是一个对象。试试这个。
var data = {}; //defines that data is a javascript object
//assign your values to there respective indexes
data['a'] = payment;
data['b'] = count_days;
data['c'] = <?php echo $teahcer_id; ?>
//since data is now a object you can json.stringify it
var jsonData = JSON.stringify(data);
//make ajax request with json data
$.ajax({
type: "POST",
url: "student_searching_availibility.php",
data: { data:jsonData },
cache: false,
success: function()
{
alert('success');
}
});
在你的PHP上,记住json_decode()期望第二个参数$ assoc参数作为布尔值,它的默认值是false,这意味着如果你只指定要解码的json字符串,那么它将以对象形式返回数据,对于关联数组,将true作为第二个参数传递。
$data = json_decode($_POST['data']); //$data is now an object
$data->a; //your payment
$data->b; //your count_days
$data = json_decode($_POST['data'],true); //$data is now an associative array
$data[a]; //your payment
$data[c]; //your count_days
当您插入sql $ data1,$ data2时,您实际上是在尝试将对象存储到表中,此处mysqli_query应该返回false并且您的代码已经死亡,因此您没有收到任何错误。
所以你的sql插入值取决于你的json_decode($ _ POST ['data'],true或false)使用$ data-&gt; a或$ data [a],即
"INSERT INTO availibility_status_date(student_id,teacher_id,status) VALUES ('$data[a]','$data[b]','$data[c]')";
OR
"INSERT INTO availibility_status_date(student_id,teacher_id,status) VALUES ('$data->a','$data->b','$data->c')";