


The solution to the problem that the ajax return value of jquery is Chinese garbled code: 1. [PrintWriter out = response.getWriter()] is placed after the relevant correct code; 2. jquery adds the parameter [content-type].
The operating environment of this tutorial: windows7 system, jquery3.2.1 version, DELL G3 computer.
Recommended: jquery video tutorial
The solution to the problem that jquery’s ajax return value is Chinese garbled code:
Using jquery's ajax, I encountered a problem. The data obtained by the server from the database did not have Chinese garbled characters (the logs were typed out without garbled characters), but when it was asynchronously transmitted to the client, Garbled characters appear. The server side has been encoded (UTF-8 encoding). At first, I always suspected that it was a client-side problem. For example, the client-side and server-side encodings were inconsistent. I also suspected that the AJAX tool function of JQuery was missing contentType: "application/x-www-form-urlencoded; charset=utf -8"
, etc.
The result was neither, I struggled for several hours, and later found out that the original code was still on the server side, and it was an oversight.
Server-side code:
/** * 异步(返回json数据格式)(支持分页) * @param mapping * @param form * @param request * @param response * @return * @throws AppException */ public ActionForward queryErrorCodeRecordByPage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { Integer currentpage = Integer.parseInt(request.getParameter("currentpage")) ; Integer pagesize = Integer.parseInt(request.getParameter("pagesize")) ; try { List ListByPage = this.errorCodeRecordFacade.queryErrorCodeRecordByPage(currentpage, pagesize); JSONArray json = JSONArray.fromObject(ListByPage); System.out.println("JSONArray数据---" + json.toString() ); request.setCharacterEncoding("utf-8"); //这里不设置编码会有乱码 response.setContentType("text/html;charset=utf-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); //输出中文,这一句一定要放到response.setContentType("text/html;charset=utf-8"), response.setHeader("Cache-Control", "no-cache")后面,否则中文返回到页面是乱码 out.print(json.toString()); out.flush(); out.close(); } catch (Exception e) { log.error("查询数据出错", e); } return null ; }
Client-side code:
//异步 根据分页来取错误码历史 数据 function search_errorCodeRecord(currentpage,pagesize) { $.ajax({ async :true, url: "<%=request.getContextPath()%>/errorCodeRecord/queryErrorCodeRecordByPage.do", type: "post", data: { currentpage: currentpage, pagesize:pagesize}, // dataType : "json", //这里已经定义数据格式 contentType: "application/x-www-form-urlencoded; charset=utf-8", success:function(data) { alert(data); // var json=eval('('+data+')'); // jquery调用时会检测到,从而直接把返回格式当做json处理,所以再转化会报错。 var json=eval(data); resolv_json(json) ; } }); } //解析json数组,动态拼接到白色Div中 function resolv_json(json) { for(var i=0;i<json.length;i++) { // alert(json[i].boss_resultinfo); var operate_state = "新增了" ; if(json[i].operate_state == "2" ) { operate_state= "修改了" ; } if(json[i].operate_state == "3" ) { operate_state= "删除了" ; } var p=$("<p></p>"); var span1=$("<span></span>"); var span2=$("<span></span>"); var span3=$("<span></span>"); var span4=$("<span></span>"); var times = json[i].operate_time.time; // alert(json[i].operate_time.time); //时间格式是个JSON对象 // alert(getLocalTime(times)); span1.html(getLocalTime(times)); span2.html(json[i].operate_people); span3.html(operate_state); span4.html(json[i].businessname +" 错误码"); p.append(span1).append(span2).append(span3).append(span4); $("#whiteDiv").append(p); } } //时间戳转化为时间 function getLocalTime(nS) { return new Date(parseInt(nS)).toLocaleString().replace(/:\d{1,2}$/,' '); } <div id="whiteDiv"> </div>
The summary is as follows:
1. PrintWriter out = response.getWriter();
Must be placed after the
request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8");
encoding (the reason is very simple, you know.)
2. Whether jquery adds the content-type
parameter will not affect it.
contentType: "application/x-www-form-urlencoded; charset=utf-8",
Related free learning recommendations: javascript(Video)
The above is the detailed content of What should I do if the ajax return value of jquery is Chinese garbled code?. For more information, please follow other related articles on the PHP Chinese website!

实现方法:1、用“$("img").delay(毫秒数).fadeOut()”语句,delay()设置延迟秒数;2、用“setTimeout(function(){ $("img").hide(); },毫秒值);”语句,通过定时器来延迟。

修改方法:1、用css()设置新样式,语法“$(元素).css("min-height","新值")”;2、用attr(),通过设置style属性来添加新样式,语法“$(元素).attr("style","min-height:新值")”。

区别:1、axios是一个异步请求框架,用于封装底层的XMLHttpRequest,而jquery是一个JavaScript库,只是顺便封装了dom操作;2、axios是基于承诺对象的,可以用承诺对象中的方法,而jquery不基于承诺对象。

增加元素的方法:1、用append(),语法“$("body").append(新元素)”,可向body内部的末尾处增加元素;2、用prepend(),语法“$("body").prepend(新元素)”,可向body内部的开始处增加元素。

在jquery中,apply()方法用于改变this指向,使用另一个对象替换当前对象,是应用某一对象的一个方法,语法为“apply(thisobj,[argarray])”;参数argarray表示的是以数组的形式进行传递。

删除方法:1、用empty(),语法“$("div").empty();”,可删除所有子节点和内容;2、用children()和remove(),语法“$("div").children().remove();”,只删除子元素,不删除内容。

去掉方法:1、用“$(selector).removeAttr("readonly")”语句删除readonly属性;2、用“$(selector).attr("readonly",false)”将readonly属性的值设置为false。

on()方法有4个参数:1、第一个参数不可省略,规定要从被选元素添加的一个或多个事件或命名空间;2、第二个参数可省略,规定元素的事件处理程序;3、第三个参数可省略,规定传递到函数的额外数据;4、第四个参数可省略,规定当事件发生时运行的函数。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

Dreamweaver Mac version
Visual web development tools

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SublimeText3 Mac version
God-level code editing software (SublimeText3)

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),
