繁体   English   中英

将数据从jQuery Ajax传递给PHP并将这些值保存在Database中

[英]Pass data from jQuery Ajax to PHP and saving those values in Database

我想使用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());
}

我在这里搜索了几乎所有这些查询,但仍无法解决问题。

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字符串,那么它将以对象形式返回数据,用于关联array传递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-> a或$ data [a]即,

"INSERT INTO availibility_status_date(student_id,teacher_id,status) VALUES  ('$data[a]','$data[b]','$data[c]')";

要么

"INSERT INTO availibility_status_date(student_id,teacher_id,status) VALUES ('$data->a','$data->b','$data->c')";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM