php返回的json被浏览器当作html类型,造成DataGrid无数据

dxy2798 2018-05-30 10:39:01
学习李炎恢老师的jquery easyui视频,在DataGrid章节遇到问题,代码和后台数据库都是按视频一步步做的,但是没有结果被显示。经查是返回的json被浏览器当作html类型,但是奇怪的是把返回的字符串粘贴出来保存成json文件是可以的,百度了好几天也没有结果,请各位帮忙看看,谢谢!


<?php
header('Content-type: text/json');
require 'config.php';

$query = mysql_query("SELECT user,email,date FROM think_user") or die('SQL错误');

$json = '';

while (!!$row = mysql_fetch_array($query,MYSQL_ASSOC)) {

$json .= json_encode($row,JSON_UNESCAPED_UNICODE).',';//JSON_UNESCAPED_UNICODE //不转义中文
}

$json = substr($json,0,-1);

echo '['.$json.']';

mysql_close();

?>


返回的json字符串如下,这个单独保存成json是可以在浏览器显示的:

[{"user":"蜡笔小新","email":"xiaoxin@qq.com","date":"2014-04-01 04:19:36"},{"user":"樱桃小丸子","email":"xiaowanzi@163.com","date":"2014-04-01 11:29:32"},{"user":"路飞","email":"lufei@qq.com","date":"2014-04-02 07:38:29"},{"user":"黑崎一护","email":"yihu@qq.com","date":"2014-04-02 05:30:44"},{"user":"李炎恢","email":"bnbbs@163.com","date":"2014-07-03 21:21:17"},{"user":"娜美","email":"namei@163.com","date":"2014-08-13 17:08:24"},{"user":"小叮当","email":"dingdang@163.com","date":"2014-08-23 17:09:14"},{"user":"大熊","email":"daxiong@163.com","date":"2014-08-25 17:09:33"},{"user":"花仙子","email":"huaxianzi@163.com","date":"2014-08-26 17:09:52"},{"user":"漩涡鸣人","email":"mingren@163.com","date":"2014-08-27 17:10:30"},{"user":"佐助","email":"zuozhu@163.com","date":"2014-08-28 17:10:43"},{"user":"卡卡西","email":"kakaxi@163.com","date":"2014-08-30 17:10:54"}]


html:

<!DOCTYPE html>
<html>
<head>
<title>jQuery Easy UI</title>
<meta charset="UTF-8">
<script type="text/javascript" src="easyui/jquery.min.js"></script>
<script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="easyui/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css"/>
<link rel="stylesheet" type="text/css" href="easyui/themes/icon.css"/>
</head>
<body>

<!-- <table class="easyui-datagrid" data-options="width:800,height:600">
<thead>
<tr>
<th data-options="field:'user'">账号</th>
<th data-options="field:'eamil'">邮件</th>
<th data-options="field:'date'">注册时间</th>
</tr>
</thead>
<tbody>
<tr>
<td>蜡笔小新</td>
<td>xiaoxin@163.com</td>
<td>2014-10-1</td>
</tr>
<tr>
<td>樱桃小丸子</td>
<td>xiaowanzi@163.com</td>
<td>2014-10-2</td>
</tr>
<tr>
<td>黑崎一护</td>
<td>yihu@163.com</td>
<td>2014-10-3</td>
</tr>
</tbody>
</table> -->
<table id="box"></table>


</body>

</html>
...全文
433 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dxy2798 2018-05-30
  • 打赏
  • 举报
回复
顺便说下,我的环境是wamp 3.13,PHP 5.6.35
dxy2798 2018-05-30
  • 打赏
  • 举报
回复
@小温LLT 谢谢帮忙,结贴时没有看到你的回复,谢谢谢谢!
dxy2798 2018-05-30
  • 打赏
  • 举报
回复
我明白版主的意思了,BOM头的意思是说在生成的json前有一个\ufeff字符造成无法解析是吗?我看到前面有个小红点,提示为\ufeff, 只要保存php文件时候格式选为php,不要选择php+BOM,生成的json就是可以被解析的。困扰了我好几天,应该是我图省事用记事本修改过 user.php文件造成的,多谢 @xuzuning 版主!
小温LLT 2018-05-30
  • 打赏
  • 举报
回复
你上面的哪些字符串 用 JSON.parse 来转换成对象.
小温LLT 2018-05-30
  • 打赏
  • 举报
回复
兄弟 你这不都已经 成了 json对象了吗,你遍历一下数组 就能获得每个对象啊,得到对象就可以取得值了.
dxy2798 2018-05-30
  • 打赏
  • 举报
回复
[quote=引用 3 楼 xuzuning 的回复:] 1、去掉程序 文件的 BOM 头 header('Content-type: text/json');是我后来加上的,实在太菜,百度上说不加上会无法识别为json,抱着有病乱投医的心情加的...
dxy2798 2018-05-30
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
1、去掉程序 文件的 BOM 头 2、没看到 js 代码
抱歉,补上js:

$(function(){
	$('#box').datagrid({
		width : 400,
		//url : 'aaa.json',
		url : 'user.php',

		title : '用户列表',
		iconCls : 'icon-search',
		columns : [[
			{
				field : 'user',
				title : '账号',
			},
			{
				field : 'email',
				title : '邮件',
			},
			{
				field : 'date',
				title : '注册时间',
			},
		]],

	});


});
dxy2798 2018-05-30
  • 打赏
  • 举报
回复
@xuzuning 您看下面的图,直接显示类型为html,数据有但是不能放进datagrid,可能是格式不是标准json吧,如果把生成的数据保存到aaa.json,修改js文件就能正常显示。
这个要怎么改呢,麻烦指教,谢谢!

xuzuning 2018-05-30
  • 打赏
  • 举报
回复
1、去掉程序 文件的 BOM 头 2、没看到 js 代码

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧