2 sxlifeng sxlifeng 于 2014.11.06 00:23 提问

easyUI datagrid 数据显示不出来的问题

用的是PHP+easyUI做的开发,EasyUI datagrid绑定数据源有问题,就是数据显示不出来。

<table id="family_info" class="easyui-datagrid" title="家庭成员信息" style="width:100%;height:auto" data-options="
            iconCls: 'icon-edit',
            fitColumns:true,
            rownumbers:true,
            url:'__URL__/stuFamilyJson',
            method:'get',
            singleSelect: true,
            toolbar: '#toolbar'">

原来在win下做开发,这样写是好使的,顺道贴出stuFamilyJson方法的代码:

public function stuFamilyJson(){
    $tb=D('StuFamily');
    $familyInfo=$tb->where('stu_id='.session('userId'))->select();
    foreach ($familyInfo as $key=>$familyInfoEach)            
    $familyInfo[$key]=$tb->parseFieldsMap($familyInfoEach);
    echo $familyInfo=json_encode($familyInfo);     
}

用浏览器开发者工具查看,得到返回值如下:

[{"id":"1","stuId":"1","folkName":"\u7236\u4eb2\u5927\u4eba","folkRelation":"\u7236\u5b50","folkCompany":"\u7236\u4eb2\u7684\u5355\u4f4d","folkPosition":"\u5de5\u4eba2","folkTel":"12345678910","folkAddress":"\u7ed9\u5927\u5bb6\u8bf4\u670di\u4e3au\u5346"},{"id":"2","stuId":"1","folkName":"\u6bcd\u4eb2\u5927\u4eba","folkRelation":"\u6bcd\u5b50","folkCompany":"\u6bcd\u4eb2\u7684\u5355\u4f4d","folkPosition":"\u5de5\u4eba","folkTel":"12345678910","folkAddress":"\u5bf9\u65b9\u7b54\u590d"},{"id":"6","stuId":"1","folkName":"\u5144\u957f\u5927\u4eba","folkRelation":"\u5144\u5f1f","folkCompany":"\u65e0","folkPosition":"\u65e0","folkTel":"123456","folkAddress":"\u70ed\u70ed\u70ed\u4ed6 \u5c14\u7279\u8ba9\u4ed6"}]

注:此部分汉字都编码了,这里就不还原。

但是现在这样写,前台就显示不出数据了!

把返回的数据直接粘贴到一个json文件,url改为该json文件,就能正常显示了。
但是,这终究不是个好办法,毕竟要和数据库交互,当然你可能说让后台操作,将结果写入json文件,这样确实可以,不过我不是很喜欢。
又想到了这样写:

<script type="text/javascript">
$(document).ready(
    $.post("__URL__/stuFamilyJson",
        function(data){
            data=eval("("+data+")");
            $("#family_info").datagrid({'data':data});
        }
    )
);
</script>

这样写发现也能正常显示。

那么,问题来了,我直接写url和这样用js写有什么区别么?为什么直接写url会出问题?还有另一个combobox,也是用url写的,刚做完好使,过了几天就不好使了,也不知道是什么原因,我觉得二者是同一原因引起的。求大神帮忙!!

4个回答

showbo
showbo   Ds   Rxr 2014.11.19 14:38

浏览器的开发工具看下是不是报错了,我这里测试你的代码没有问题

showbo
showbo 应该还是你服务器端有问题返回的实际内容不符合datagrid的要求,用16进制编码可以很好解决乱码问题
接近 3 年之前 回复
sxlifeng
sxlifeng 谢谢!console里也没报错,最后也没找到问题。由于项目刚开始不久,把整个项目代码重写一遍就好了
接近 3 年之前 回复
zjh527
zjh527   2014.11.06 08:35

格式不正确,正确格式应为{total:100, rows:[{.....},{.....}]}。请仔细阅读API

sxlifeng
sxlifeng 经过试验发现原因是后台PHP返回的数据类型是字符串,虽然和json长的一样,但是格式不是json,不过还没找到解决办法
接近 3 年之前 回复
sxlifeng
sxlifeng 这种格式也试过了,也不行。而且现在的格式,直接粘贴到json文件也好使
接近 3 年之前 回复
yujiang0
yujiang0   2016.10.23 11:52

我也碰到这个问题,突然不行的

kou869929526
kou869929526   2016.11.21 11:39

我也遇到了这个问题,大神求指导!

Csdn user default icon
上传中...
上传图片
插入图片