gpt4 book ai didi

javascript - 将 JSON 数据保存到数据库

转载 作者:行者123 更新时间:2023-11-30 13:05:02 27 4
gpt4 key购买 nike

选择了 knockout.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
}
});

以及我将数据保存到数据库中的方法:

// 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。

最佳答案

当你使用 Input::json() 时,Laravel 会自动将 JSON 解码为一个对象供你使用。在大多数情况下,您希望对提交的 JSON 进行一些处理,并且通常不会将其存储为 JSON,而是存储在数据库行的单独列中。

如果您使用的是 Laravel 3,则可以改为使用以下行来获取原始(未解码的)JSON:

$raw = Request::foundation()->getContent();

在 Laravel 4 中,我相信它是:

$raw = Input::getContent();

或者,如果您希望将 JSON 解码为数组,您可以在 Laravel 3 中使用以下内容...

$array = Input::json(true);

Laravel 4 中没有 as-array 等价物。

关于javascript - 将 JSON 数据保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16000258/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com