jQuery MiniUI

标题: 关于Gird.setData()方法的字符串解析的问题. [打印本页]

作者: nbakill2    时间: 2013-8-5 17:06:47     标题: 关于Gird.setData()方法的字符串解析的问题.

grid.setData(mini.decode(strs));

这个方法总是会报错..

strs内容
[{username:'admin',password:'123456',personname:''|"|'|"'}]

红色部分每次在setData的时候,解析就出错了..mini.js里面执行的 var s = eval("("+json+")")这个方法失败...

首先我在persion列已经设置了 {field:'personname',autoEscape:true},但是还是不行

请问有什么好的解决办法

作者: factory    时间: 2013-8-6 09:38:20

[{username:'admin',password:'123456',personname:''|"|'|"'}]
你的单双引号的配对就是错了的,你这样的personname的值是'' 空的,再后面的这些就完全无法辨别了,不谈encode和decode,就算单纯是一个数组,也会检测错误

[attach]2481[/attach]

作者: nbakill2    时间: 2013-8-6 10:16:40

factory 发表于 2013-8-6 09:38
[{username:'admin',password:'123456',personname:''|"|'|"'}]
你的单双引号的配对就是错了的,你这样的pe ...

asp.net后台完整的解析字符串是这样的

{res:"true",msg:"[{username:'admin',password:'123456',personname:''|"|'|"'}]"}

你再看看这样,我前台JS   
var json = eval("("+data+")");//首先我这里就解析了一次.如果我用的不是单引号这里就失败了.
if(json.res=="true"){
    form.setData(mini.decode(json.msg));//这里第二次
}


你这样试一试就解析失败了
作者: nbakill2    时间: 2013-8-6 13:59:23

factory 发表于 2013-8-6 09:38
[{username:'admin',password:'123456',personname:''|"|'|"'}]
你的单双引号的配对就是错了的,你这样的pe ...

asp.net后台完整的解析字符串是这样的

{res:"true",msg:"[{username:'admin',password:'123456',personname:''|"|'|"'}]"}

你再看看这样,我前台JS   
var json = eval("("+data+")");//首先我这里就解析了一次.如果我用的不是单引号这里就失败了.
if(json.res=="true"){
    form.setData(mini.decode(json.msg));//这里第二次
}


你这样试一试就解析失败了
作者: factory    时间: 2013-8-6 14:23:12

nbakill2 发表于 2013-8-6 13:59
asp.net后台完整的解析字符串是这样的

{res:"true",msg:"[{username:'admin',password:'123456',personn ...

[{username:'admin',password:'123456',personname:'\'|"|\'|"'}]

手动拼的话,加上\

一般手动拼才会出这种错,用json组件的话,是不会出现这种问题的
作者: nbakill2    时间: 2013-8-7 08:02:26

factory 发表于 2013-8-6 14:23
[{username:'admin',password:'123456',personname:'\'|"|\'|"'}]

手动拼的话,加上\

json组件的话,有什么好的组件推荐吗???

请帮忙,谢谢!
作者: factory    时间: 2013-8-7 09:20:49

nbakill2 发表于 2013-8-7 08:02
json组件的话,有什么好的组件推荐吗???

请帮忙,谢谢!

你可以直接用miniui的,后台的看.net看App_Code\Utils下面的JSON.cs
java是src\Test下的JSON.java
作者: nbakill2    时间: 2013-8-7 15:58:58

factory 发表于 2013-8-7 09:20
你可以直接用miniui的,后台的看.net看App_Code\Utils下面的JSON.cs
java是src\Test下的JSON.java ...

我看了那个文件,但是不知道你指的是哪个方法..

以为我asp.net后台回传的是字符串,只不过是json数组类型的字符串

我是在前台用eval("("+data+")")方法解析成json数组的..

但是就是在解析的时候出了错误.

可否帮忙?
作者: nbakill2    时间: 2013-8-7 16:24:45

factory 发表于 2013-8-7 09:20
你可以直接用miniui的,后台的看.net看App_Code\Utils下面的JSON.cs
java是src\Test下的JSON.java ...

我看了那个文件,但是不知道你指的是哪个方法..

以为我asp.net后台回传的是字符串,只不过是json数组类型的字符串

我是在前台用eval("("+data+")")方法解析成json数组的..

但是就是在解析的时候出了错误.

可否帮忙?
作者: factory    时间: 2013-8-7 17:13:36

nbakill2 发表于 2013-8-7 16:24
我看了那个文件,但是不知道你指的是哪个方法..

以为我asp.net后台回传的是字符串,只不过是json数组类型 ...

你不用管这2个文件,有了这个2个文件之后,你只需要按照demo的后台的encode和decode使用就行了
比如.net的话,Test.JSON.Decode(str)

Test.JSON.Encode(data)
作者: nbakill2    时间: 2013-8-7 17:20:08

factory 发表于 2013-8-7 17:13
你不用管这2个文件,有了这个2个文件之后,你只需要按照demo的后台的encode和decode使用就行了
比如.net ...

Decode是转换成json对象

encode是转换成字符串

这2个方法的意义我知道.

但是我想说的是..


我动态拼接的Form(table标签)


asp.net后台回传的是json字符串(这个字符串就是用过json.encode方法得到的.).

每次在解析的时候我是JS前台来解析这个json字符串,eval("("+jsonstr+")")就会报错.

内容是


<tr><td>付款类别:</td><td><input name='PaymentType' class='mini-buttonedit' width='300' showClose='true' oncloseclick='onCloseClick' onbuttonclick='onButtonEdit' data-options='{PKTitle:'PaymentType',IsMultiple:'1',PKText:'text',PKID:'id',PKSQL:'[{'id':'1','text':'采购'},{'id':'2','text':'外发加工'}]',PKDBConn:'TigerLeader'}' /></td></tr>


将这个tr使用js    append方法 追加到  table中,然后  mini.parse()  就报错了,报错字符串在 data-options那里..
你可以试一下.
作者: factory    时间: 2013-8-7 17:21:53

nbakill2 发表于 2013-8-7 17:20
Decode是转换成json对象

encode是转换成字符串

那你前后台都统一通我们提供的json序列化和反序列化的方法做呢?
作者: nbakill2    时间: 2013-8-7 17:25:54

factory 发表于 2013-8-7 17:21
那你前后台都统一通我们提供的json序列化和反序列化的方法做呢?

前台的序列化和反序列化是什么??

指的是 mini.encode吗? 如果是的话,我试过了..是不行的.
作者: factory    时间: 2013-8-7 17:33:54

nbakill2 发表于 2013-8-7 17:25
前台的序列化和反序列化是什么??

指的是 mini.encode吗? 如果是的话,我试过了..是不行的. ...

你后台用我们提供decode,前台用mini.encode,前后台都用我们的,也不行吗?




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