Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 标签和预先包装在Chrome中的JSON输出_Php_Jquery_Json_Google Chrome_Pretty Print - Fatal编程技术网

Php 标签和预先包装在Chrome中的JSON输出

Php 标签和预先包装在Chrome中的JSON输出,php,jquery,json,google-chrome,pretty-print,Php,Jquery,Json,Google Chrome,Pretty Print,我使用这个简单的代码将数组打印为JSON结构 header('Content-Type: application/json'); echo json_encode($this->data, JSON_PRETTY_PRINT); 我使用的是Chrome版本28.0.1500.95M。出于某种奇怪的原因,输出被包装在一个带有制表符(即\t)的前置标记中 JSON似乎可以解析,但在没有发送数据的情况下,我仍然可以得到那个制表符。我怎样才能解决这个问题 <pre style="word-

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

header('Content-Type: application/json');
echo json_encode($this->data, JSON_PRETTY_PRINT);
我使用的是Chrome版本28.0.1500.95M。出于某种奇怪的原因,输出被包装在一个带有制表符(即
\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>

您需要删除添加
标记的任何代码。这会导致您的响应是无效的JSON(但预打印的空白并不成问题),从而使jQuery在解析时失败


我在PHP文档中看不到关于JSON响应被包装在
中的任何内容,但是您当然可以在没有标记的情况下尝试它。我还要确认你的回复中是否有标签。如果您使用view source并安装了JSON pretty printing浏览器扩展,它可能是由该扩展添加的,而不是由JavaScript代码处理的实际JSON。

您需要删除添加
标记的任何代码。这会导致您的响应是无效的JSON(但预打印的空白并不成问题),从而使jQuery在解析时失败


我在PHP文档中看不到关于JSON响应被包装在
中的任何内容,但是您当然可以在没有标记的情况下尝试它。我还要确认你的回复中是否有标签。如果您使用view source并安装了JSON pretty printing浏览器扩展,它可能是由该扩展添加的,而不是由JavaScript代码处理的实际JSON。

hmmm,我自己一直在寻找正确答案,但没有一个成功。但是我试着做了如下的事情,这对我来说很有效

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

2-我使用了
die(json\u encode($this->data))
而不是
echo json\u encode($this->data)

希望它能为你工作,尽管我觉得有点晚了
请原谅我回答了一个老问题,我最近也遇到了同样的问题

嗯,我自己在寻找一个正确的答案,但没有一个成功。但是我试着做了如下的事情,这对我来说很有效

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

2-我使用了
die(json\u encode($this->data))
而不是
echo json\u encode($this->data)

希望它能为你工作,尽管我觉得有点晚了
请原谅我回答了一个老问题,我最近也遇到了同样的问题。

您何时使用
jQuery.isEmptyObject
?您也需要显示您的JS代码。我已经添加了jQuery端。@ExplosionPills我想用它来测试是否没有返回数据。不确定它是否是适当的形式。
$this->data
来自哪里?它是否来自文件、数据库等。?它是与
标记和选项卡一起存储的,还是加载到该变量时添加了
标记?何时使用
jQuery.isEmptyObject
?您也需要显示JS代码。我添加了jQuery端。@我想用它来测试是否没有返回数据。不确定它是否是适当的形式。
$this->data
来自哪里?它是否来自文件、数据库等。?它是与
标记和选项卡一起存储的,还是加载到该变量时添加了
标记?jQuery可以很好地解析JSON,但在没有响应时会传递'\t'。PHP端没有导致打印
pre
的明显代码。如果你在谷歌上搜索这个pre标签,你会看到主题上发布的主题。这些线路也没有延伸。这就是为什么我感到困惑,并询问为什么会发生这种情况。例如,请参阅本主题:jQuery可以很好地解析JSON,但在没有响应时会传递“\t”。PHP端没有导致打印
pre
的明显代码。如果你在谷歌上搜索这个pre标签,你会看到主题上发布的主题。这些线路也没有延伸。这就是为什么我感到困惑,并问为什么会发生这种情况。例如,请参阅本主题:
$.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
        });
    }
});