【问题标题】:PHP json_encode - Same Code once delivers an Array and once an objectPHP json_encode - 相同的代码一次传递一个数组,一次传递一个对象
【发布时间】:2019-04-20 04:58:11
【问题描述】:

我在两个 PHP 类中使用相同的代码。我复制并粘贴了它。 在一个类中,一个数组被传递给 JavaScript,我在其中也使用了一段复制/粘贴的代码,并且曾经是一个对象。

这是 PHP 代码:

private $status_good = array('Status' => 'good');
private $status_fail = array('Status' => 'fail');

echo json_encode($this->status_fail);

这里是 JS/jquery- 代码:

    $.post("./someclass.php",
       {
            code    :   this.code,   
            input   :   this.input
       },   
       function( data ){
          console.log("Data: ")
          console.log(data );
       }

一旦控制台显示:Data: {"Status":"fail"}
在另一个脚本中:Data: Object { Status: "fail" }

我没有进行任何 UTF 操作,也没有进行任何标头操作。
请好心告诉我,在不同类中使用完全相同的代码会如何发生这种情况。
提前致谢。

【问题讨论】:

  • 您 100% 确定您没有在此处显示其他内容?
  • 您好 Jeff,我们不会以任何方式对数组进行操作。在一个 PHP- 类中,我检查是否发送了电子邮件,在另一个类中,我检查数据库查询的结果数是否高于 0。因此,如果未发送电子邮件或 db- 结果的数量为0.

标签: php jquery arrays json object


【解决方案1】:

dataType 参数添加到$.post 和/或在php 中设置Content-type 标头。

$.ajax 对返回的数据类型进行“最佳猜测”,如果它没有明确告知预期的内容并且没有标题来帮助它决定。

它似乎在一种情况下正确处理并解析 JSON,而在另一种情况下,它将其视为文本并将字符串返回给回调。

$.post("./someclass.php",
   {
        code    :   this.code,   
        input   :   this.input
   },   
   function( data ){
      console.log("Data: ")
      console.log(data );
   },'json')

【讨论】:

  • 你好 charlietfl,这似乎已经完成了这项工作。我将 dataType 'json' 添加到 $.post。现在答案被识别为对象。仍然看起来有点奇怪,但它有效。非常感谢。
  • 并不奇怪。您发送的 json 可能没有正确的内容类型标头。
  • 道歉。我的意思是因为代码完全相同并且反应不同。我当然明白你告诉我的。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
相关资源
最近更新 更多