ノックアウト.jsを拾い、PHP(より具体的にはLaravelフレームワーク)を使用してmysqlデータベースにデータを保存しようとしています。ここにajaxがあります:
$.ajax("save", {
data: ko.toJSON(this), // turns the input into JSON I assume?
type: "post",
success: function() {
alert("Success!"); // right now I'm alerting the data to troubleshoot
}
});
そして、データをDBに保存する私の方法:
// I expect my ajax to send me data that is in json format
// I then decode the data to get an array which I can use to run my query
$data = json_decode(Input::json(), true);
return DB::table('content')->insert($data);
ただし、問題は、正確には、オブジェクト型のデータを受信しているように見えることです (実行gettype()
し$data
てjson_decode()
エラーも返しました) 。stdClass Object
私のjavascript内で何が起こっていたのかをトラブルシューティングすると、データに警告が表示され、データはJSONであったため、機能しているはずです。
ただし、次のように機能しました:
$data = json_encode(Input::json(), true);
return DB::table('content')->insert(json_decode($data), true);
これは正常に機能し、データベースなどに保存されましたが、混乱しています。JSON の経験がないことをお許しください。
- フロントエンドでデータを JSON にエンコードする
- サーバーにデータを送信する
- バックエンドでデータをデコードし、サーバーで処理できる形式 (この場合は配列) に変換します。
- データの挿入
だから、私の最初の試みではうまくいかなかった$data = Input::json()
のはオブジェクト型です。Json_decode は文字列を想定しているためエラーをスローしますが、JSON を想定しているため、ちょっと迷っています。