【问题标题】:JSON response not objects from phpJSON响应不是来自php的对象
【发布时间】:2015-02-14 05:11:38
【问题描述】:

我正在使用 php 代理绕过跨域 ajax 问题

我的 php:

return array(
        'status' => 'ok',
        'header' => $header,
        'content' => $content
    );

所以现在我的 $response['content'] 保存了我的内容,但我也想要我的标题。

如果我:

echo $response['content'];

然后我得到如下回复:

这是我需要的!但我也想在回声中有 $response[header]。 但是如果我:

echo $response;

我得到:

如何在 json 响应中同时获取两者,以便在我的 javascript 代码中使用它? 为什么它只是返回纯文本'Array'

如果我使用 json_encode,它的格式不正确,就像我的第一个示例一样。

它失去了所有的格式..?

【问题讨论】:

  • echo 不会打印出对象。也许改用var_dump
  • JSON_FORCE_OBJECT 也不起作用
  • 使用json_encode() 可能吗?
  • 我在 OP 中说过我使用 json_encode 并且它失去了它的格式。 var_dump 也

标签: javascript php ajax json


【解决方案1】:

你必须用json_decode()解析响应数据$content

$data = array(
    'status' => 'ok',
    'header' => $header,
    'content' => json_decode($content)
);

header('Content-type: application/json');
echo json_encode($data);

您也可以直接返回 JSON,无需解析

header('Content-type: application/json');
echo '{"status":"ok", "header":"' . $header . '", "content":"' . $content . '"}';

【讨论】:

  • 我通常不赞成纯代码答案,但我感觉很慷慨。尝试解释为什么此代码可能比 OP 更有效,以便他们和未来的读者可以了解您的工作原理,而不仅仅是复制和粘贴您的代码。
  • 谢谢,这似乎是我想要的。除了我的“标题”现在需要解析为 json,因为它只是一个标题“文本”数组,例如"编译指示:无缓存"
猜你喜欢
  • 2017-02-10
  • 2017-10-12
  • 2015-11-24
  • 2010-10-02
  • 1970-01-01
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-12
相关资源
最近更新 更多