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

时间:2021-02-06 18:29:36
学习李炎恢老师的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>

10 个解决方案

#1


顺便说下,我的环境是wamp 3.13,PHP 5.6.35 

#3


1、去掉程序 文件的 BOM 头
2、没看到 js 代码

#4


引用 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 : '注册时间',
},
]],

});


});

#5


@xuzuning 您看下面的图,直接显示类型为html,数据有但是不能放进datagrid,可能是格式不是标准json吧,如果把生成的数据保存到aaa.json,修改js文件就能正常显示。
这个要怎么改呢,麻烦指教,谢谢!
php返回的json被浏览器当作html类型,造成DataGrid无数据
php返回的json被浏览器当作html类型,造成DataGrid无数据

#6


Quote: 引用 3 楼 xuzuning 的回复:

1、去掉程序 文件的 BOM 头
header('Content-type: text/json');是我后来加上的,实在太菜,百度上说不加上会无法识别为json,抱着有病乱投医的心情加的...

#7


兄弟 你这不都已经 成了 json对象了吗,你遍历一下数组 就能获得每个对象啊,得到对象就可以取得值了.

#8


你上面的哪些字符串 用 JSON.parse 来转换成对象.

#9


我明白版主的意思了,BOM头的意思是说在生成的json前有一个\ufeff字符造成无法解析是吗?我看到前面有个小红点,提示为\ufeff,

只要保存php文件时候格式选为php,不要选择php+BOM,生成的json就是可以被解析的。困扰了我好几天,应该是我图省事用记事本修改过

user.php文件造成的,多谢 @xuzuning 版主!


#10


@小温LLT 谢谢帮忙,结贴时没有看到你的回复,谢谢谢谢!

#1


顺便说下,我的环境是wamp 3.13,PHP 5.6.35 

#2


#3


1、去掉程序 文件的 BOM 头
2、没看到 js 代码

#4


引用 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 : '注册时间',
},
]],

});


});

#5


@xuzuning 您看下面的图,直接显示类型为html,数据有但是不能放进datagrid,可能是格式不是标准json吧,如果把生成的数据保存到aaa.json,修改js文件就能正常显示。
这个要怎么改呢,麻烦指教,谢谢!
php返回的json被浏览器当作html类型,造成DataGrid无数据
php返回的json被浏览器当作html类型,造成DataGrid无数据

#6


Quote: 引用 3 楼 xuzuning 的回复:

1、去掉程序 文件的 BOM 头
header('Content-type: text/json');是我后来加上的,实在太菜,百度上说不加上会无法识别为json,抱着有病乱投医的心情加的...

#7


兄弟 你这不都已经 成了 json对象了吗,你遍历一下数组 就能获得每个对象啊,得到对象就可以取得值了.

#8


你上面的哪些字符串 用 JSON.parse 来转换成对象.

#9


我明白版主的意思了,BOM头的意思是说在生成的json前有一个\ufeff字符造成无法解析是吗?我看到前面有个小红点,提示为\ufeff,

只要保存php文件时候格式选为php,不要选择php+BOM,生成的json就是可以被解析的。困扰了我好几天,应该是我图省事用记事本修改过

user.php文件造成的,多谢 @xuzuning 版主!


#10


@小温LLT 谢谢帮忙,结贴时没有看到你的回复,谢谢谢谢!