Extjs grid 显示数据问题

yangqiang0619 2009-11-27 04:30:06
从数据库读取数据发现。
如果数据库中存的数据是:"<b>粗了吗?</b>"
在grid中将不能显示。而且其它所有的数据也显示不了。

是用json传数据的
...全文
245 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangqiang0619 2009-12-04
  • 打赏
  • 举报
回复
原来是请求验证问题。结贴
yangqiang0619 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 silvernet 的回复:]
我试了没有问题,不过我不是从数据库中取的,是直接在后台页面打出的
C# code
Response.Write("{total:4,results:[{\"id\":1,\"name\":\"<b>粗了吗? </b>\"},{\"id\":2,\"name\":\"name2\"},{\"id\":3,\"name\":\"name3\"},{\"id\":4,\"name\":\"name4\"}]}");

楼主可以检查数据库和后台程序,最好用firebug查看返回数据。
[/Quote]

我先试下。
SilverNet 2009-12-01
  • 打赏
  • 举报
回复
我试了没有问题,不过我不是从数据库中取的,是直接在后台页面打出的

Response.Write("{total:4,results:[{\"id\":1,\"name\":\"<b>粗了吗? </b>\"},{\"id\":2,\"name\":\"name2\"},{\"id\":3,\"name\":\"name3\"},{\"id\":4,\"name\":\"name4\"}]}");


楼主可以检查数据库和后台程序,最好用firebug查看返回数据。
wnpers 2009-11-30
  • 打赏
  • 举报
回复
我也正在找这个 收藏了
nature_he 2009-11-29
  • 打赏
  • 举报
回复
学习了
yangqiang0619 2009-11-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 silvernet 的回复:]
应该你这个不会有错

在后台返回的JSON字符串中 如果含有 '(单引号),\(反斜线) 这些特殊字符的时候,使用ext会出现字符串解析错误.也就说有可能应为字符串中含有单引号而使字符串异常结束.解决办法是在返回这些字符串以前加入转义符:
(java实现的例子)
Java code/**
* 将JSON字符串处理成javascript可以识别的
*
*@param ors
*@return*/publicstatic String dealString4JSON(String ors) {
ors= ors==null?"" : ors;
StringBuffer buffer=new StringBuffer(ors);///在替换的时候不要使用 String.replaceAll("\\","\\\\"); 这样不会达到替换的效果 因为这些符号有特殊的意义,在正则///表达式里要用到int i=0;while (i< buffer.length()) {if (buffer.charAt(i)=='\''|| buffer.charAt(i)=='\\') {
buffer.insert(i,'\\');
i+=2;
}else {
i++;
}
}return buffer.toString().replaceAll("\r","").replaceAll("\n","");
}
[/Quote]
是真的。哥们你有空可以试下。
不过我就感到奇怪,怎么会这样。。。
SilverNet 2009-11-28
  • 打赏
  • 举报
回复
应该你这个不会有错

在后台返回的JSON字符串中 如果含有 '(单引号),\(反斜线) 这些特殊字符的时候,使用ext会出现字符串解析错误.也就说有可能应为字符串中含有单引号而使字符串异常结束.解决办法是在返回这些字符串以前加入转义符:
(java实现的例子)

/**
* 将JSON字符串处理成javascript可以识别的
*
* @param ors
* @return
*/
public static String dealString4JSON(String ors) {
ors = ors == null ? "" : ors;
StringBuffer buffer = new StringBuffer(ors);
///在替换的时候不要使用 String.replaceAll("\\","\\\\"); 这样不会达到替换的效果 因为这些符号有特殊的意义,在正则 ///表达式里要用到
int i = 0;
while (i < buffer.length()) {
if (buffer.charAt(i) == '\'' || buffer.charAt(i) == '\\') {
buffer.insert(i, '\\');
i += 2;
} else {
i++;
}
}
return buffer.toString().replaceAll("\r", "").replaceAll("\n", "");
}
javaVScsharp 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yangqiang0619 的回复:]
引用 2 楼 javavscsharp 的回复:
这样可以的


我存的数据稍有点奇形怪状,存了就不能取。。。
真奇怪
[/Quote]可能你存的时候有问题吧,看看数据库是什么
yangqiang0619 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 javavscsharp 的回复:]
这样可以的
[/Quote]

我存的数据稍有点奇形怪状,存了就不能取。。。
真奇怪
javaVScsharp 2009-11-27
  • 打赏
  • 举报
回复
这样可以的
licip 2009-11-27
  • 打赏
  • 举报
回复
可是< > 这样的符号要转义吧。

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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