【问题标题】:How best to pass a complex JavaScript object to PHP?如何最好地将复杂的 JavaScript 对象传递给 PHP?
【发布时间】:2014-02-22 02:06:10
【问题描述】:

我有一个包含两个数组的 JavaScript 对象。其中一个数组是对象数组,另一个只是一个简单的数组。

obj = {
  arr1: [
    {
      a1: 'val',
      a2: 'val'
    },
    {
      b1: 'val',
      b2: 'val'
    }
  ],
  arr2: ['a', 'b', 'c']
};

我正在尝试将整个对象作为对象传递给 PHP 以存储在 MySQL 数据库中。 我应该如何做到最好,以便最终以与开始时相同的结构将其传递回 JavaScript?

非常感谢您的帮助。

【问题讨论】:

  • 您的数据可以很容易地表示为 JSON。
  • @elclanrs 数组和对象的混合不会导致 JSON 出现任何问题吗?有什么我需要注意的可能会导致此结构出现问题的事情吗?
  • 网络上有大量的资源,关于如何做到这一点(使用 JSON),你还没有做任何研究。 -1
  • @dibs 只要 JSON 支持数据类型(对象、数组和字符串,您的示例中唯一的类型都受支持),它就可以工作。 JSON 旨在像那样易于使用。
  • @Markasoftware 我认为我可以只使用 JSON 字符串,但想确定这是最好的方法,所以我问了。

标签: javascript php mysql arrays object


【解决方案1】:

JSON

这是一个在javascript中将对象转换为字符串并返回的示例

它不应该包含函数

var obj={a:'a',b:'b',array:[1,2,3,4]};
var string=JSON.stringify(obj);

// or back to object 
var obj=JSON.parse(string);

发布该字符串。

然后在php中你也可以这样做。

<?php
$obj=json_decode($_POST['string']);

// back to object
// $string=json_encode($obj);
?>

如果您想要一个帖子示例,请询问.. 或者如果您有任何问题。

【讨论】:

  • 谢谢@cocco。我想这就是方式,但想确保我没有错过任何东西/做一些不被建议的事情。
  • 它实际上可以包含函数 - JSON.stringify 只会将它们剥离,您必须将它们重新添加。也没有理由 json_decode - 只需将其保存为字符串并使用application/json contentType
  • 所以基本上......它不应该包含函数......因为它没用。顺便说一句,你可以转换你的函数。到 base64 并使用 (new Function(base64))()。但那是另一回事了。
  • 只是想澄清它不会抛出错误或任何东西,函数通常被用作强制 json 序列化程序省略属性的一种方式。
猜你喜欢
  • 2011-01-31
  • 2011-09-15
  • 1970-01-01
  • 2014-10-28
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 2012-05-27
  • 2023-03-03
相关资源
最近更新 更多