2017-01-12 2 views
1

Ajaxを使用してJS変数をPHPページに送信し、その変数をデータベースに保存できるようにしたいとします。しかし、それは期待どおりに機能していません。 私のJSコード:jQuery AjaxからPHPにデータを渡してそれらの値をデータベースに保存します。

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

エラーはどういうものですか? – Sohlowmawn

+0

エラーは表示されません。しかし、値はデータベースにも保存されません。私はAjaxレスポンスでエラー機能を使用していますが、エラー機能も動作しません。私はどちら側がエラークライアント側かサーバ側であるのか混乱しています – UDGogs

+0

'$ _POST'の中にある値をダンプしようとしましたか? * student_searching_availibility.php *側で必要なコードを準備し、送信ページを再読み込みし、** Inspect **ブラウザ内で** [**ネットワーク**]タブを開き、受け取ったものを見てください。 – Mihailo

答えて

0

JSONはjavascripのオブジェクト表記です。変数をJSON.string化できません。オブジェクトでなければなりません。これを試して。あなたのPHPで

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'); 
    } 
}); 

、そのjson_decodeを(覚えている)は、第2パラメータにブール値として$の連想パラメータを期待し、そのデフォルトはあなただけspecity JSON文字列は、その後、復号化される場合、それはあなたのデータを返すことを意味している偽でありますオブジェクト形式では、連想配列は第2パラメータとしてtrueを渡します。あなたが実際にあなたのテーブルにオブジェクトを格納しようとしていたのSQLの$ DATA1、$データ2に挿入されたとき

$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 

、ここmysqli_queryはfalseが返されている必要がありますし、あなたのコードは、このようにあなたが任意のエラーを取得されていません死亡しました。

だからあなたのSQLのINSERT値あなたのjson_decodeに応じて、($ _ POST [ 'データ']、trueまたはfalse)$データ - > Aまたは$データ[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')"; 
+0

それはいくつかの調整で働いた。どうもありがとう。あなたは私に多くの痛みを救った – UDGogs

関連する問題