【问题标题】:Tab and pre wrapped around JSON output in Chrome在 Chrome 中使用选项卡和预包装 JSON 输出
【发布时间】:2013-08-27 00:38:45
【问题描述】:

我正在使用这个简单的代码将数组打印为 JSON 结构。

header('Content-Type: application/json');
echo json_encode($this->data, JSON_PRETTY_PRINT);

我使用的是 Chrome 版本 28.0.1500.95 m。出于某种奇怪的原因,输出被包装在一个带有制表符(即\t)开头的前置标记中。

JSON 似乎可以解析,但是当没有发送数据时,我仍然会得到那个制表符。我该如何解决这个问题?

<pre style="word-wrap: break-word; white-space: pre-wrap;"> {
    "title": "Node",
    "items": [
        {
            "label": "Do stuff",
            "icon": "..\/ui\/images\/icons\/16x16\/icon.png",
            "action": "dostuff"
        }
    ]
}</pre>

编辑:这是 jQuery 端的代码:

$.ajax({
    url : "/myproject/getmenu/",
    type : 'GET',
    dataType: "json",
    success : function(data) {
        //alert(JSON.stringify(data,undefined,2));

        if (jQuery.isEmptyObject(data)) {
            return;
        }

        title = data.title;
        items = data.items;

        selected.contextPopup({
            title : title,
            items : items
        });
    }
});

【问题讨论】:

  • 你什么时候使用jQuery.isEmptyObject
  • 你也需要展示你的JS代码。
  • 我已经添加了 jQuery 端。
  • @ExplosionPills 我想用它来测试是否没有数据发回。不确定它是否是适当的形式。
  • $this-&gt;data 来自哪里?它是否来自文件、数据库等?它是与&lt;pre&gt; 标记和选项卡一起存储的,还是在加载到该变量时添加了&lt;pre&gt; 标记?

标签: php jquery json google-chrome pretty-print


【解决方案1】:

您需要删除任何添加&lt;pre&gt; 标记的代码。这会导致您的响应是无效的 JSON(不过,漂亮打印它的空格不是问题),从而导致 jQuery 在解析它时失败。

我在 PHP 文档中看不到任何关于 JSON 响应被包裹在 &lt;pre&gt; 中的内容,但您当然可以在没有标志的情况下尝试它。我还要确保检查标签是否真的在您的回复中。如果您使用 view-source 并安装了 JSON 漂亮打印浏览器扩展,则它可能由该扩展添加,而不是在您的 JavaScript 代码处理的实际 JSON 中。

【讨论】:

  • JSON 被 jQuery 解析得很好,但是当没有响应时,'\t' 正在被传递。 PHP 端没有明显的代码导致pre 被打印。如果您在 google 上搜索该 pre 标签,您将看到发布在该主题上的主题。这些方面也没有延伸。这就是为什么我感到困惑并询问为什么会发生这种情况。
  • 参见本主题,例如:stackoverflow.com/questions/3002109/…
【解决方案2】:

嗯,我正在寻找自己的正确答案,但没有一个有用。但是我尝试按照以下方式进行操作,并且对我有用...

1-我将内容类型设置为application/json

2- 我使用了 die(json_encode($this-&gt;data)) 而不是 echo json_encode($this-&gt;data)

希望它对你有用,虽然我想它有点太晚了 :D 请原谅我回答了一个我最近遇到同样问题的老问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多