在Chrome中,Tab和Pre包裹着JSON输出

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

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

我正在使用Chrome版本28.0.1500.95米。 出于某种奇怪的原因,输出在开始时被包装在带有制表符(即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
        });
    }
});

您需要删除任何代码添加<pre>标记。 这会导致您的响应无效JSON(尽管如此,相当漂亮的空白并不是问题),因此在解析jQuery时会失败。

在PHP文档中,我看不到有关JSON响应被封装在<pre>但是您一定可以在没有标记的情况下尝试它。 我还要确保检查标签是否在您的回复中。 如果你使用view-source并且安装了一个JSON漂亮的打印浏览器扩展,它可能会被该扩展添加,而不是被JavaScript代码处理的实际JSON。


嗯,我正在寻找一个正确的答案我的自我,但没有一个人工作。 但我试图按照以下做法,它为我工作...

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

2-我使用的die(json_encode($this->data))而不是echo json_encode($this->data)

希望它能为你工作,尽管我猜它有点晚:D原谅我回答我最近碰到的一个老问题,我自己也遇到了同样的问题

链接地址: http://www.djcxy.com/p/47109.html

上一篇: Tab and pre wrapped around JSON output in Chrome

下一篇: Standard Colors for Syntax Highlighting