【问题标题】:Why should we serialize data before sending in Javascript?为什么我们要在发送 Javascript 之前序列化数据?
【发布时间】:2014-02-12 13:37:55
【问题描述】:

我想知道为什么我们需要在发送到服务器之前序列化一个 JavaScript 对象。

例子:

var send_data= {
    id : 10,
    name : 20,

    school : {
       name : "xyz",
       location : "some place"
    }
}

如果我在不序列化的情况下发送这些数据,使用这样的 ajax

$.ajax({
    type: "POST",
    url: "some.php",
    data: { "info" : send_data}
})

这段代码有问题吗?因为我可以在不反序列化的情况下访问所有数据......

$data = $_POST["info"];
echo $data["school"]["name"];

【问题讨论】:

  • 示例中的发送方式没有问题。
  • 如果您向服务器发送数据并且从服务器获取数据,请使用JSON.Stringify,请使用JSON.Parse
  • @ArpitSrivastava:没必要。 OP 使用的 data 参数可以正常工作。
  • @Cerbrus:但这是一个很好的做法,我们应该使用它来检查天气我们是正确的 dict 或 JSON 到服务器,因为用户处理发布数据的方式。
  • @ArpitSrivastava:你知道 jQuery 在内部序列化数据参数,对吧?你说天气是为了什么?

标签: javascript serialization


【解决方案1】:

数据必须被序列化,因为网络流量由一系列字节组成。在某些时候,您的数据结构必须转化为可以通过网络发送的东西。

但是,如果您使用对象而不是字符串作为其数据参数,jQuery 的.ajax() 函数已经 会进行序列化。所以没必要在那里做。

我不太了解 PHP,但如果您那里的代码有效,那么显然 PHP 也会自动反序列化数据。

所以我会说是的,序列化是必要的,但是按照您描述的方式进行操作实际上会在后台对其进行序列化。

【讨论】:

  • 非常感谢 Remco。我很困惑,我开始想,那个浏览器正在为我序列化它......然后我开始考虑跨浏览器兼容性..非常感谢:)
猜你喜欢
  • 2021-04-05
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
  • 2020-10-30
  • 2012-09-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
相关资源
最近更新 更多