架构: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字符串到客户端时报 Internal server error的更多相关文章

  1. http 500 Internal Server Error的错误 ajax请求SpringMVC后台中返回500 Internal Server Error

    使用httprequester接口测试能返回数据,但是用ajax返回json格式的时候返回报500Internal Server Error. The server encountered an in ...

  2. php 图片上传 500 Internal Server Error 错误

    写php简单上传图片时,发现200k的图片上传时报Internal Server Error错误,检查了upload_max_filesize,及其他post_max_size.max_input_t ...

  3. 启动app-inspector报Internal Server Error

    前言 应用工具app-inspector可以协助定位IOS版App的控件元素,然鹅启动时报Internal Server Error! 解决办法 一.找到XCTestWD项目 目录: /usr/loc ...

  4. Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)

    form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...

  5. Ajax传递json数据简介和一个需要注意的小问题

    Ajax传递json数据 Ajax操作与json数据格式在实际中的运用十分广泛,本文为大家介绍一个两者相结合的小案例: 项目结构 我们新建一个Django项目,在里面创建一个名为app01的应用: p ...

  6. 用ajax传递json,返回前台的中文乱码问题

    java项目中用ajax传递json,返回前台时中文出现问号(乱码问题)的解决办法 首先看一下没有解决前的状态: 我用的框架是ssm,在springMVC中我配置了编码格式为utf-8,每个jsp页面 ...

  7. boke例子: freermarker:在使用ajax传递json数据的时候多出冒号

    boke例子: freermarker:在使用ajax传递json数据的时候多出冒号 json数据是用JSON.stringify()格式化的数据,然后用ajax传递,发现数据多出一个冒号:, 后来度 ...

  8. 记一次接口调试错误: {"timestamp":"2019-09-11T03:04:30.036+0000","status":500,"error":"Internal Server Error","message":"Could not write JSON: Object is null; nested exception is com.fasterxml.jackson

    接口测试中用postman测试返回是正常的,但是使用其他人去调用就出错了,找了半天,才想起来使用了nginx,用于端口的代理转发.然后根据错误信息发现json格式的某个字段为null,结合日志中的报文 ...

  9. 调用 WebService 浏览器提示 500 (Internal Server Error) 的原因及解决办法

    在 ASP.NET 开发中,WebService部署成站点之后,如果在本地测试WebService可以运行,在远程却显示“测试窗体只能用于来自本地计算机的请求”或 者"The test fo ...

随机推荐

  1. MATLAB仿真学习笔记(一)

    一.Simulink概述 1.特点 simulink是对动态系统进行建模.仿真和综合分析的图形化软件,可以处理线性和非线性.离散.连续和混合系统,也可以处理单任务和多任务系统,并支持多种采样频率的系统 ...

  2. swap() 函数实现的方法

    swap()函数总结: 一.利用临时变量 1.引用(交换任意类型) template <typename T> void swap(T& x,T& y) { T tmp; ...

  3. HTML学习笔记之标签基础

    目录 1.基本标签 2.链接 3.图像 4.表格 5.列表 6.块与布局 1.基本标签 (1)标题与段落 标签 <h1> ~ <h6> 分别用于定义一至六级标题,标签 < ...

  4. BZOJ 1724 USACO 2006 Nov. 切割木板

    倒过来的合并果子? 做法与合并果子一样 维护一个小根堆,每次取出最小的两个数进行合并 #include<cstdio> #include<algorithm> #include ...

  5. 利用Linux中的crontab实现分布式项目定时任务

    @Controller @RequestMapping("/task/topic") public class TopicQuartzController { protected ...

  6. ZOJ - 2243 - Binary Search Heap Construction

    先上题目: Binary Search Heap Construction Time Limit: 5 Seconds      Memory Limit: 32768 KB Read the sta ...

  7. E - Period

    For each prefix of a given string S with N characters (each character has an ASCII code between 97 a ...

  8. N天学习一个linux命令之diff

    用途 按行比较文件差异,也可以比较目录 用法 diff [OPTION]... FILES 常用选项 -i --ignore-case 忽略大小写 --ignore-file-name-case 忽略 ...

  9. [Python]croppic 裁剪图片的Python后台实现

    import cStringIO import io import base64 from PIL import Image, ImageTk def img_crop_to_file(request ...

  10. 被AppStore拒绝理由(一)

    July 8, 2015 at 7:06 AM 发件人 Apple 17.1 - Apps cannot transmit data about a user without obtaining th ...