jQuery MiniUI

标题: datagrid json is error 问题 [打印本页]

作者: linda931    时间: 2013-4-16 10:41:19     标题: datagrid json is error 问题

本帖最后由 linda931 于 2013-4-16 13:38 编辑

这是获取到得数据:
{"total":12,"data":[{"ID":14,"ProjectNme":"呃呃呃","Discount":0.00,"PriceType":"","Remarks":"","TypeName":"退料入库单","RedBillCode":"","EndDate":null,"AttnorName":"管理员","IsDel":false,"StorgeName":"K仓(润达室外)","BillCode":"TLR-201303-3","TotalMoney":0.00,"RelationBillCode":"LLC-201304-1","LinkMan":"","BuySaleDate":"2013-04-15T14:29:38","HasInvoice":false,"Years":"2013","Period":"","Creator":"8","CreationDate":"2013-04-15T14:29:38","ContactID":"","DiscountMoney":2.00,"CreateDate":"2013-04-15T00:00:00","AuditState":"未审核","RelationBillType":"12","DeptName":"财务部门","LinkPhone":"","DeliveryAddress":"","CreatorName":"35334","StorgeID":"9","BillTypeID":"4","Months":"03","ProjectID":"13","DeptId":"5","RedState":"","Attnor":"2"},{"ID":12,"ProjectNme":"te","Discount":0.00,"PriceType":"","Remarks":"","TypeName":"退料入库单","RedBillCode":"","EndDate":null,"AttnorName":"俄而突然","IsDel":false,"StorgeName":"K仓(润达室外)","BillCode":"TLR-201303-1","TotalMoney":0.00,"RelationBillCode":"LLC-201304-1","LinkMan":"","BuySaleDate":"2013-04-15T14:22:52","HasInvoice":false,"Years":"2013","Period":"","Creator":"12","CreationDate":"2013-04-15T14:22:52","ContactID":"","DiscountMoney":2.00,"CreateDate":"2013-04-15T00:00:00","AuditState":"未审核","RelationBillType":"12","DeptName":"财务部门","LinkPhone":"","DeliveryAddress":"","CreatorName":"俄而突然","StorgeID":"9","BillTypeID":"4","Months":"03","ProjectID":"8","DeptId":"5","RedState":"","Attnor":"12"}]}


作者: linda931    时间: 2013-4-16 10:43:50

代码页:
<head>
    <title>销售出库管理</title>
     <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <link href="../CSS/demo.css" rel="stylesheet" type="text/css" />
    <script src="../scripts/boot.js" type="text/javascript"></script>
    <!--引入皮肤样式-->
    <link href="../scripts/miniui/themes/blue/skin.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <h1 align="center">
        销售出库管理</h1>
   
    <!--撑满页面-->
    <div id="grid" class="mini-datagrid" style="width: 100%; height: 400px;" url="SysModel.aspx?method=GetBillList"
        idfield="ID" allowresize="true" sizelist="[15,20,30,50,100]" pagesize="15" multiselect="false">
        <div property="columns">
            <div type="checkcolumn" width="40">
                选择</div>
            <div field="TypeName" headeralign="center" allowsort="true" with="100">
                单据类型</div>
            <div field="BillCode" headeralign="center" allowsort="true" with="100">
                单据编号</div>
            <div field="FullName" headeralign="center" allowsort="true" with="100">
                仓库</div>
            <div field="DeptName" headeralign="center" allowsort="true" with="100">
                部门</div>
            <div field="IsDel" headeralign="center" allowsort="true" with="100" renderer="onIsDel">
                是否作废</div>
            <div field="AuditState" headeralign="center" allowsort="true" with="100">
                审核状态</div>
            <div field="CreateDate" headeralign="center" dateformat="yyyy-MM-dd" allowsort="true"
                with="100">
                制单日期</div>
            <div field="Remarks" headeralign="center" allowsort="true" with="100">
                备注</div>
        </div>
    </div>
    <script type="text/javascript">
        mini.parse();
        var grid = mini.get("grid");
        grid.load();

        function onIsDel(e) {
            if (e.value == 1) return "是";
            else return "否";
        }
        function onInvoice(e) {
            if (e.value == 1) return "有";
            else return "无";
        }
    </script>
</body>
</html>
作者: linda931    时间: 2013-4-16 10:48:31


但是获取的数据在另一页代码中是没有问题的?

我把这页代码中grid 列只是剩下一列还是不行。

作者: niko    时间: 2013-4-16 11:38:54

我试过,可以的。
[attach]1625[/attach]
你看下我用你的数据和代码做的例子。

你的可能是:
1.后台返回的时候,参杂了其他的字符串,导致JSON结构错误
2.编码不正确,导致JSON解析错误


作者: linda931    时间: 2013-4-16 13:33:33

niko 发表于 2013-4-16 11:38
我试过,可以的。

你看下我用你的数据和代码做的例子。

在这之后我把所有的代码和数据与别的页面交叉使用,发现获取方法和页面都没有问题,最把获取的后台变了个文件就没有问题了但是没有找出问题出在那.  主要是发现这个问题不知道是到底是什么原因,以后也很麻烦
作者: niko    时间: 2013-4-16 15:28:03

你可能是后台页面返回了多余的字符串,导致JSON格式错误。
作者: 736169136@qq.co    时间: 2013-4-24 15:23:00

niko 发表于 2013-4-16 11:38
我试过,可以的。

你看下我用你的数据和代码做的例子。

我想用aspx和aspx.cs实现怎么做?
作者: factory    时间: 2013-4-24 15:25:22

736169136@qq.co 发表于 2013-4-24 15:23
我想用aspx和aspx.cs实现怎么做?

后台返回一个json字符串就可以了
作者: 736169136@qq.co    时间: 2013-4-29 09:28:48

factory 发表于 2013-4-24 15:25
后台返回一个json字符串就可以了

json字符串返回过来了。但是是在页面打印出来的无法与datagrid绑定
作者: 736169136@qq.co    时间: 2013-4-29 09:52:24

本帖最后由 736169136@qq.co 于 2013-4-29 10:22 编辑
factory 发表于 2013-4-24 15:25
后台返回一个json字符串就可以了


[attach]1742[/attach]这种情况怎么解决!?[attach]1743[/attach][attach]1745[/attach]
[attach]1744[/attach]


作者: niko    时间: 2013-4-30 09:08:47

请提供这样的两个文件:
1.html
2.json.txt
不要提供项目,我们是不会用你的项目调试的。
作者: 736169136@qq.co    时间: 2013-5-4 10:06:50

niko 发表于 2013-4-30 09:08
请提供这样的两个文件:
1.html
2.json.txt

哦哦!那么aspx页面的datagrid中url应该给什么?
作者: niko    时间: 2013-5-4 10:13:35

json.txt里面放你的JSON数据。
url="json.txt"
这样就可以加载静态数据,模拟环境了。
作者: 736169136@qq.co    时间: 2013-5-4 14:45:03

niko 发表于 2013-5-4 10:13
json.txt里面放你的JSON数据。
url="json.txt"
这样就可以加载静态数据,模拟环境了。 ...

也就是说CS文件中没有办法直接返回到aspx页面json字符串是吧!?
作者: niko    时间: 2013-5-5 08:55:03

cs当然可以直接返回JSON字符串了。
你下载.net版本:http://www.miniui.com/download/
然后参考 demo/data/ajaxservice.aspx里面的代码
作者: 736169136@qq.co    时间: 2013-5-5 15:26:21

niko 发表于 2013-5-5 08:55
cs当然可以直接返回JSON字符串了。
你下载.net版本:http://www.miniui.com/download/
然后参考 demo/data/ ...

<%@ Page ValidateRequest="false" Language="C#" AutoEventWireup="true" CodeFile="AjaxService.aspx.cs" Inherits="demo_data_AjaxService"  %>

只有个这个好像不能解决问题吧!
作者: factory    时间: 2013-5-6 09:24:46

736169136@qq.co 发表于 2013-5-5 15:26
只有个这个好像不能解决问题吧!

你参考AjaxService.aspx.cs里面的代码,返回的是一个json字符串。
作者: 736169136@qq.co    时间: 2013-5-6 11:57:43

factory 发表于 2013-5-6 09:24
你参考AjaxService.aspx.cs里面的代码,返回的是一个json字符串。

json字符串获取到了!在aspx页面要怎样处理?
还有miniui是不是不能处理连表查询?
作者: factory    时间: 2013-5-6 12:00:03

736169136@qq.co 发表于 2013-5-6 11:57
json字符串获取到了!在aspx页面要怎样处理?
还有miniui是不是不能处理连表查询? ...

关联查询应该是你自己后台SQL写的啊,获取数据之后,把数据返回给表格就可以了

字符串获取不到,应该是你数据格式不正确
{
    total: 100,     //总记录数
     data: [         //分页后的数组数据
         { ... },
        { ... },
        ...
    ]
}

看这个http://www.miniui.com/docs/tutorial/datagrid.html
作者: 736169136@qq.co    时间: 2013-5-7 17:00:51

factory 发表于 2013-5-6 12:00
关联查询应该是你自己后台SQL写的啊,获取数据之后,把数据返回给表格就可以了

字符串获取不到,应该是 ...

哦哦!谢谢帮助!
mini-combobox控件
var jb = mini.getbyName("CR");
jb.setValue("VIP客户");
不能设置它的显示值是怎么回事儿?
监视时jb未定义
作者: factory    时间: 2013-5-7 17:08:30

736169136@qq.co 发表于 2013-5-7 17:00
哦哦!谢谢帮助!
mini-combobox控件
var jb = mini.getbyName("CR");

一般获取单个的指定的控件的话,给id比较合适,然后mini.get("id")即可

你的VIP客户是文本还是值,因为combobox有value和text,
数据是这样的data = [{id:"1",text:"一号"}]

setValue(value)里面的参数应该是值,比如id
如果你设置文本的话,应该是setText("文本"),比如text
作者: zbm    时间: 2013-6-8 18:25:28

本帖最后由 zbm 于 2013-6-8 18:28 编辑

我也遇到这个问题了,困扰了1个下午了。
我得到了json——{"total":2,"maxAge":98,"avgAge":20,"minAge":0,"data":[{"ShortAddresscodeID":null,"AddresscodeName":"123","AddresscodeID":"370800000000"},{"ShortAddresscodeID":null,"AddresscodeName":"456","AddresscodeID":"370802000000"}]},分析也没错,存成.tx后,直接连接这个txt,能成显示。
直接获取这个json字符串,就提示“json is error”,怎么回事?

作者: niko    时间: 2013-6-8 21:12:03

请检查下编码格式是否匹配
另外用httpwatch看json数据
作者: zbm    时间: 2013-6-9 10:34:32

zbm 发表于 2013-6-8 18:25
我也遇到这个问题了,困扰了1个下午了。
我得到了json——{"total":2,"maxAge":98,"avgAge":20,"minAge":0, ...

调用.aspx的页面中只保留最顶端的一行即可,其他的统统删掉,因为在asp.net生成的.aspx中包含了其他Html信息。我也被困扰了好长时间,原以为是编码的问题、数据库的问题,最后分析到AjaxService.aspx只有一行——<%@ Page ValidateRequest="false" Language="C#" AutoEventWireup="true" CodeFile="AjaxService.aspx.cs" Inherits="demo_data_AjaxService"  %>

本人的测试,去掉了其他的Html信息后,也正常了。
作者: zbm    时间: 2013-6-9 10:35:18

调用.aspx的页面中只保留最顶端的一行即可,其他的统统删掉,因为在asp.net生成的.aspx中包含了其他Html信息。我也被困扰了好长时间,原以为是编码的问题、数据库的问题,最后分析到AjaxService.aspx只有一行——<%@ Page ValidateRequest="false" Language="C#" AutoEventWireup="true" CodeFile="AjaxService.aspx.cs" Inherits="demo_data_AjaxService"  %>

本人的测试,去掉了其他的Html信息后,也正常了。
作者: factory    时间: 2013-6-9 10:38:25

zbm 发表于 2013-6-9 10:35
调用.aspx的页面中只保留最顶端的一行即可,其他的统统删掉,因为在asp.net生成的.aspx中包含了其他Html信 ...

是的,参考我们的demo,aspx页面删除只剩顶部的代码
作者: tangmuming    时间: 2014-1-13 16:37:13

我也遇到这个问题了, 不过我的是在java web工程里使用的。    后台传到页面的是一个 Map 对象,之前的功能也都是这么做的,没有问题,不过今天却碰到问题了。
作者: factory    时间: 2014-1-13 16:55:30

tangmuming 发表于 2014-1-13 16:37
我也遇到这个问题了, 不过我的是在java web工程里使用的。    后台传到页面的是一个 Map 对象,之前的功能 ...

看看是不是你的后台数据出问题了
作者: niko    时间: 2014-1-13 16:58:16

tangmuming 发表于 2014-1-13 16:37
我也遇到这个问题了, 不过我的是在java web工程里使用的。    后台传到页面的是一个 Map 对象,之前的功能 ...

1.下载java的开发包,看我们示例是否有此问题
2.不行的话,请将你后台生成的JSON拷贝出来,做成示例上传看看
作者: tangmuming    时间: 2014-1-13 17:04:11

niko 发表于 2014-1-13 16:58
1.下载java的开发包,看我们示例是否有此问题
2.不行的话,请将你后台生成的JSON拷贝出来,做成示例上传 ...

很奇怪的是,这个问题不是在我机器上发现的,我本地是没有这个问题的。 打包给测试部,部署到linux 环境上的时候,就出现这个问题的。   一下子也没找到原因, 因为之前的东西也都是这么做的,也没出现这个问题,这次的东西,后台,前台基本都是拷贝之前的代码,然后就出问题了。     miui在 操作系统上,有没有不同。
作者: factory    时间: 2014-1-13 17:05:58

tangmuming 发表于 2014-1-13 17:04
很奇怪的是,这个问题不是在我机器上发现的,我本地是没有这个问题的。 打包给测试部,部署到linux 环境 ...

miniui是纯JS的框架,他跟后台是没有关系的. 所以操作系统上肯定也是没问题. JAVA项目用miniui的用户也有很多
作者: tangmuming    时间: 2014-1-13 17:13:38

    <div id="lanmu_grid" class="mini-datagrid list_table" style="width:95%;height:auto;" allowResize="true"
        url="<%=path %>/cloudtb/getFvList"  idField="id" allowAlternating="true"
        showEmptyText="true" emptyText="对不起,没有记录" pageSize="20"  >
        <div property="columns">   
            <div type="indexcolumn" headerAlign="center" align="center" ><B>序号</B></div>
            <div field="model" width="60" headerAlign="center"  align="center"><B>音箱型号</B></div>                                       
            <div field="hardVersion" width="40" headerAlign="center"  align="center" ><B>硬件版本</B></div>  
                        <div field="softVersion" width="40" headerAlign="center"  align="center"  ><B>软件版本</B></div>
                        <div field="size" width="30" headerAlign="center"  align="center"  ><B>大小</B></div>
                        <div field="time" width="60" headerAlign="center" dateFormat="yyyy-MM-dd HH:mm:ss"  align="center"  ><B>发布时间</B></div>
                        <div field="action" width="60" headerAlign="center"  align="center"  ><B>操作</B></div>
        </div>
    </div>

<script type="text/javascript">
mini.parse();
        var grid = mini.get("lanmu_grid");
        grid.load();
</script>


这个是前端的代码,   省略了一些其他的标签,都是一些无关紧要的,没列出来。

    <action name="getFvList" class="firmwareVersionAction" method="index">
        <result type="json" name="success">
                <param name="excludeNullProperties">true</param>
                 <param name="root">fvlist</param>  
      </result>
   </action>

struts2配置文件

private Map<String,Object> fvlist;

        public String index() throws Exception {
                Map<String,Object> param = new HashMap<String,Object>();
                param.put(FirmwareVersionConstants.MCPP_FV_PAGE_START, pageIndex*pageSize);
                param.put(FirmwareVersionConstants.MCPP_FV_PAGE_LIMIT, pageSize);
                fvlist = service.getFvList(param);
                return SUCCESS;
        }
后台返回的就是一个这样的map  
map 里放的是
map.put("data",数据集合list);
map.put("total",总数)
                 
你帮我看下,这样没错吧
作者: niko    时间: 2014-1-13 17:23:19

重点在于,你的后台地址返回的JSON数据内容是什么,编码格式是否正确。
请将url="<%=path %>/cloudtb/getFvList"返回的JSON拷贝出来看看。




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2