jsp中response.write有时输出不了结果(Json问题)

来源:百度知道 编辑:UC知道 时间:2024/06/08 06:58:00
问题是这样的:
界面用的是extjs.用过的人应该知道.
每页显示也就50条记录.
但是这50条记录里面每一条记录都包含一些很长字符串的字段.
然后将这50条记录转换成json后,再用response.write输出返回界面.

问题:有时候能正常显示,有时候后台明明返回结果了,但是界面显示的数据还是上一次查询的结果.即界面并未刷新结果集.(同样的50条记录,有时候能正常显示,有时候不能显示)

1.由于这种现象的问题,我分不清到底是response有长度限制还是我的结果集里面包含了特殊的符号而致的.

2.查询结果里面有些字段里面包含引号,但通过debug我看到这些引号都被转义了(\").会不会和这有关?

但让我奇怪的事情是:如果长度有限制或包含了特别符号那为什么时候能正常显示.有时候不能.

我很头痛,以前同事留下的烂活.没办法....
希望有这方面经验的高手指点一下.如果解决问题我追加100分
我找到原因了,ext默认与服务器交互的时间为30秒,
我们的数据量很大,有时候分页查询可能查询超过30秒,从而导致上面的问题.

不过还是谢谢大家的回复。关心分数,以投票来定吧.

不太可能是response的问题
我的一个用EXTJS做的表格式的报表几百条记录都是printwriter写过来的。。。
PrintWriter out = response.getWriter();
out.write(.........);

应该是引号转义的问题。。
\"转义是不是只在组成string字符串时转义了,放到ext的Store里时还经过什么处理还是怎么回事,你试试把\"换成\\\"

初步观察 可能是缓存问题

你用的是ie吧
ie 他会多事,自动帮你掉上次的缓存。
就是说你前台明明刷新过了,后台数据也变了,但是他显示的依然是上一次的数据。即他没有再一次向服务器发请求,他调缓存去了。
解决方案是:
在ajax请求后面加时间戳。
比如

http://dixiasoft.cn/show.jsp?id=123&time=1234565456543

var time=new Date().getTime()

把这个时间戳加到请求的尾巴上,这样就会保证每次都调用最新数据了

原理:

在ie下 如果往服务器发送两次相同参数的请求,第二次会调用第一次的缓存,
加个时间戳就保证每次调的都是最新数据啦
哈哈
希望对你有帮助

输出前,先flush一次.清空输出流后在输出

如果有可能的化,你可以把你的程序发给我,我可以帮你调,我刚刚用extjs做过一个系统,我的qq是306220363

不懂意思