Php 标签和预先包装在Chrome中的JSON输出
我使用这个简单的代码将数组打印为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-
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
});
}
});