【问题标题】:Access JSON that has been serialized and encoded访问已经序列化和编码的 JSON
【发布时间】:2016-02-03 16:07:42
【问题描述】:

我有一个表单,我收集输入并保存在 1 个隐藏文本字段中。

为此,我执行以下操作:

$data = JSON.stringify($('#engraving_options'));
$serializedData = JSON.stringify($('#engraving_options').serializeObject());
$encodedData = $('#textField0').val(encodeURIComponent($serializedData));
$('#textField0').val($encodedData);

这会将数据放入 [Object object] 并按照我的需要将其保存到数据库中。

我的问题是 - 在另一端 (PHP) 我如何访问该信息并显示它?

我正在处理的网站(在 Prestashop 中)有几个地方现在显示“[Object object]”,我想让它很好地显示对象中的信息。

这些显示部分之一的当前 PHP 是这样的:

{$customization.datas.$CUSTOMIZE_TEXTFIELD.0.value|replace:"<br />":" "|truncate:28:'...'|escape:'html':'UTF-8'}

如何使该部分以编程方式显示对象中的信息的最佳方法是什么?挖掘该对象的最佳方法是什么?

【问题讨论】:

  • JSON.stringify($('#engraving_options')) 没有意义。那是为了什么?您正在将一个 jQuery 对象传递给JSON.stringify()。您也不能将存储的字符串 [Object object] 转换为任何内容
  • 我只是想包装表单的所有输入(engraving_options)并将所有这些键/值放在文本输入中以保存到数据库中。这样,以后我就可以把它们拉出来很好地展示出来。

标签: javascript php jquery arrays json


【解决方案1】:

如果您想要可检索的数据,您需要序列化表单的所有输入。

试试

var formData = JSON.stringify($('#engraving_options').serializeArray());
$('#textField0').val(formData);

serializeArray() docs

【讨论】:

  • 当页面加载时我将如何通过 PHP 访问它?假设提交并保存到数据库,以编程方式提取信息的最佳方式是什么?
  • 它将是 json,因此您可以使用 json_decode() 作为对象数组访问
  • 如果您已经提交表单,不确定为什么还需要这样做。你是用ajax提交吗?
  • 这个自定义雕刻显示在结帐页面等内容上。我希望它能够正确显示,并且如果需要,用户还可以在其中编辑它。所以能够把它拉出来并很好地展示它是很重要的。
  • 是的,使用 ajax 提交。提交看起来像这样:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多