架构:struts2+JQuery
需求:就是前台请求后台,后台查询数据库,将数据转换成json格式,使用struts2框架赋值给action内的变量jsonStr,前台通过 response.jsonStr 得到 json字符串,接着做相关操作。
前端代码:
jQuery.ajax({
url: 'business/xxxx!xxxx.action',
data: 'id='+id,
type: 'POST',
dataType:"json",
beforeSend: function() {
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);//前台打出:internal server error
alert(request.status);//前台打出: 500
alert(request.readyState);//前台打出:4
alert(textStatus);//前台打出: 空字符串
},
success: function(response) {
var jsonObj = eval("("+response.jsonStr+")");
}
});
后端关键代码(省略查数据库的部分,很简单,就是将转换好的json字符串赋值给Action里的某个变量):
this.setJsonStr(jsonStr);
问题来了,
当jsonStr数据内的某个属性值比较大的时候,在这个案例里是超出了3000个字符(一个中文算三个字符),
而且含有大量中文时,前端会报错,注意,是“数据大“+”大量中文“这两个条件同时满足才会出现该问题。
总之,这种情况下就前台就会打出internal server error ,错误码是500。
按理说3000多个字符并不大,并且所谓的大量中文,算了下大概占1800个字符吧(乘以3之后),
目前还不知道根本原因是什么。有知道的欢迎留言~
解决方案:
前端-->ajax请求的dataType改为: ”text",
获取json对象改为:var jsonObj = eval("("+response+")");
后端--> 把方法的返回值从String改为 void,简单的说就是不用struts2自带的传值方式,关键代码如下:
this.getServletResponse().setContentType("text/html;charset=UTF-8");
super.getServletResponse().getWriter().write(jsonStr);
当然规范的写法最后是要关掉/释放 PrintWriter 的。
分享到:
相关推荐
保存的数据有换行,处理ajax返回json数据时无法处理出现的错误;
JSON的全称是 Javascript Object Notation(javascript对象表示法),是基于javascript对象字面量。这篇文章主要介绍了使用原生ajax处理json字符串的相关资料,需要的朋友可以参考下
利用AJAX传递JSON数组,后台struts2的action接收。 详细代码简单易懂。
整理文档,搜刮出一个jquery拼接ajax 的json和字符串拼接的代码,稍微整理精简一下做下分享。 jQuery拼接字符串ajax <form id="myForm" action="#"> <input name="name"/> <input name="age"/>...
ajax json java 用法 json 将List、Object转换为Json格式字符串
本项目使用了jQuery的get/post两种方法提交Json格式的数据到后台,后台再把Json格式的数据传到前台。实现了JSON字符串和JSON对象之间的转换。
在.NET中使用AJAX技术来做服务器端和客户端交互,用JSON做为在异步应用程序中发送和接收信息的数据格式。
Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中 OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中 writeValueAsString(obj):将对象转为json字符串 2. 注解: ...
解决从前台到后台数据传输的详细代码及注释
HttpUrlConnection对象模拟POST带JSON字符串的AJAX请求失败! 我的目的是抓取响应结果字符串"301",但抓取的结果是一堆HTML代码,哪位大神看看哪有毛病?
json.js and json.jar 博文链接:https://terran-li2008.iteye.com/blog/199088
最近上班太忙,晚上抽空整理一下ajax请求中,后台返回json字符串和json数组的场景,以及前台的处理示例。 直接看代码。 json字符串的后台响应 package com.ajax; import java.io.IOException; import java.io....
1、将form中的数据利用本工具转换成json格式的字符串,再通过ajax传给服务器,从而可以实现无刷新的form提交。; 2、通过AJAX从服务器得到json格式的数据,然后使用本工具解析数据填入form。从而可以实现无刷新的...
主要介绍了jQuery使用ajax传递json对象到服务端及contentType的用法,结合实例形式分析了jQuery使用ajax传递json对象数据及服务器响应相关操作技巧,需要的朋友可以参考下
如何使用AJAX返回JSON数据,就是dataType,当你设置json后返回的json字符串传递到客户端就是JSON对象了,示例如下,感兴趣的朋友可以参考下
JavaWeb通过ajax、json实现省市二级联动:客户端通过jsp页面,来访问服务器的servlet,服务器访问数据库,返回json数据给客户端
一头扎进Ajax&Json视频教程第一讲
php基于jquery的ajax技术传递json数据简洁实例_.docx
通过 ajax实现无刷新页面,返回字符串三级级联