【问题标题】:An empty JSON object produced by jquery code is wrongly parsed to an empty string in PHP codejQuery 代码生成的空 JSON 对象在 PHP 代码中被错误地解析为空字符串
【发布时间】:2019-11-22 08:35:31
【问题描述】:

我通过 ajax 将 JSON 对象传递给我的 php 文件。然后我使用函数json_encode,并将其保存到数据库中。

问题是,当 JSON 对象为空 {},那么在 PHP 中它不是空对象/数组,而是空字符串 ""

我需要将其反序列化为编码(空 JSON 对象),而不是空字符串。

我做错了什么?

查询:

                    _key = $(this).data('column-name');
                    _temp = {};
                    $(this).find('> .rc-picker-content  > .rc-picker-item').each(function (__index, $__element) {
                        _temp[__index] = {};
                        _temp[__index] = $(this).attr('data-value');

                    });
                    _attr[_key] = _temp; //the variable which is sent via ajax to php

PHP

if (isset($_POST['value']) && is_array($_POST['value'])){
        $_POST['value'] = json_encode($_POST['value']); //this hould be enmpty array not empty string
 }

【问题讨论】:

  • 您是否尝试过将字符串转换回服务器端的对象?看起来你需要某种模型。
  • 能看到代码吗?没有它,很难调试!
  • 我添加了代码sn-ps
  • _temp[__index] = $(this).attr('data-value'); 这行可能使它成为一个空字符串(它会覆盖之前的空对象分配)。这就是说,您添加的代码并未显示发送到 php 后端的最终值。如果提供了适当的 json 字符串,php 肯定会给你一个空数组/对象。 3v4l.org/GFFDb

标签: php jquery json json-deserialization json-serialization


【解决方案1】:

使用 json_encode 的 JSON_FORCE_OBJECT 选项:

json_encode($status, JSON_FORCE_OBJECT);

这可能会有所帮助。

【讨论】:

  • 可能会还是会?如果可能的话 - 在 cmets 中留下您的建议。
  • 在我的情况下它不起作用,该值仍然是一个空字符串:/
【解决方案2】:

我找到了解决办法。

在通过 ajax 将对象发送到我的 php 文件之前,我将其转换为字符串。

_temp =   JSON.stringify(_temp);

此解决方案已被提出。我只需要重组我的代码。

【讨论】:

    猜你喜欢
    • 2022-08-10
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 2013-06-22
    相关资源
    最近更新 更多