Tab并预先包装在Chrome中的JSON输出

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

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

我使用的是Chrome版本28.0.1500.95 m。 由于某些奇怪的原因,输出被包装在一个带有制表符(即\t )的预标签中。

JSON似乎解析没问题,但是当没有数据发送时我仍然得到该选项卡字符。 我怎样才能解决这个问题 ?

 
 { "title": "Node", "items": [ { "label": "Do stuff", "icon": "..\/ui\/images\/icons\/16x16\/icon.png", "action": "dostuff" } ] }

编辑:这是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 }); } }); 

您需要删除添加


标记的任何代码。 这会导致您的响应无效JSON(尽管这些空白并不是一个问题),因此在解析它时会使jQuery失败。

我在PHP文档中看不到有关包含在


的JSON响应的任何内容,但是你可以在没有标志的情况下尝试它。 我还要确保检查标签是否确实在您的回复中。 如果您使用view-source并且安装了JSON-pretty-printing浏览器扩展,则可能会由该扩展添加,而不是由JavaScript代码处理的实际JSON。

嗯,我正在寻找一个正确的答案,但他们都没有工作。 但我试着按照以下方式做,它对我有用……

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

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

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