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

时间:2017-01-12 17:14:47

标签: javascript php

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

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

1 个答案:

答案 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')";