`

ajax post 请求乱码

    博客分类:
  • java
阅读更多
项目总体编码都为:GBK
过滤器JAVA代码
package com.sunstar.sos.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;


/**
 * 
 * <p>Title: ConditionAction.java</p>
 * 
 * <p>Description: 解决ajax post请求中文乱码filter类 </p>
 * 
 * 
 * @author 
 * @version 1.0
 */
public class RequestEncodingFilter implements Filter {

	/** ajax请求的编码 */
	public final String ajaxEncoding = "utf-8";

	private boolean ignore = false;

	/** url请求参数中用户标志是否是一个ajax请求的标志名称 */
	private String ajaxFlag = "__ajax__";

	public void destroy() {
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {

		if (ignore) {
			chain.doFilter(request, response);
			return;
		}

		HttpServletRequest req = (HttpServletRequest) request;

		// 这里不使用getParameter方法,否则会使后续setCharacterEncoding方法失效
		String queryString = req.getQueryString();

		// 如果请求url参数中含有flag(默认为__ajax__),则表明使用ajax请求,则编码设置为utf-8
		if (queryString != null && queryString.indexOf(ajaxFlag) != -1) {
			request.setCharacterEncoding(ajaxEncoding);

			// 调用一次getParameter方法,使得在此之后再调用setCharacterEncoding将会无效
			// (web框架会在之后再调用此方法,但是已经失效)
			// 参数不一定为ajaxFlag,可以是任何值
			request.getParameter(ajaxFlag);
		}

		chain.doFilter(request, response);
	}

	public void init(FilterConfig filterConfig) throws ServletException {
		String value = filterConfig.getInitParameter("ignore");
		ajaxFlag = filterConfig.getInitParameter("ajaxFlag");

		if (ajaxFlag == null) {
			ajaxFlag = "__ajax__";
		}

		if (value == null) {
			ignore = false;
		} else if (value.equalsIgnoreCase("true")
				|| value.equalsIgnoreCase("yes")) {
			ignore = true;
		} else {
			ignore = false;
		}
	}

}



web.xml配置
	<filter>
		<filter-name>requestEncoding</filter-name>
		<filter-class>com.sunstar.sos.filter.RequestEncodingFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>requestEncoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


ajax请求:actionName.action?__ajax__
分享到:
评论

相关推荐

    c# ajax post数据乱码解决

    需要对webconfig修改,主要是要修改页面编码格式为utf-8

    ajax异步请求小结

    具体描述ajax的获取,ajax属性,参数设置,编程步骤,缓存问题,get/post乱码问题,以及应用场景的阐述 onreadystatechange 绑订事件处理函数(处理readystatechange事件)。 注:当readyState属性值发生了任何的改变...

    ajax请求乱码的解决方法(中文乱码)

    今天遇到一个问题,有关ajax请求中传输中文,遇到乱码的问题。 如下代码: 代码如下:function UpdateFolderInfoByCustId(folderId, folderName, custId) { $.ajax({ type: “Post”, contentType: “application/...

    ajax中文乱码如何解决

    今天终于解决了AJAX的中文乱码问题,写篇文章来帮助一下有同样问题的朋友们。我的开发环境:XP, eclipse,使用GB18030编码。 当遇到这个问题时,到网上去查了好多文章,提到几种解决方案,如:全站UTF-8编码;请求头...

    AJAX在Post中文的时候乱码的解决方法

    AJAX在Post中文的时候乱码的解决方法

    jquery ajax post提交数据乱码

    在用jquery处理html5的应用的时候,一直在firefox下测试都正常,用户用pad访问的时候说有乱码,自己试验了下果然,后发现chrome和ie内核下都是有此问题,此问题设置了页面属性为utf-8时候,只有firefox是传的charset...

    JQuery中Ajax的Post提交在IE下中文乱码的解决方法

    在JQuery的Ajax POST请求中,进行请求,其中的中文在后台,显示为乱码,在FF/Chrome中,可以正常传递中文,但是在IE下,则存在问题

    ajax乱码解决汇总

    ajax乱码解决总结 第一,javascript沿用java的字符处理方式,内部是使用unicode来处理所有字符的, 第二,utf-8是每个汉字(unicode字符)用3个字节来存储。 第三,用utf-8来send数据是不会出现乱码的,是后台程序...

    Ajax传递中文参数到后台乱码的有效解决方法

    使用Ajax传递中文参数,如果不对参数进行处理的话,传到后台会变成乱码,经测试可以使用如下方法 这里是以jquery.autocomplete插件中获取输入框中的数据传到后台为例: 注意要对中文使用encodeURI编码两次 代码如下:...

    ajax请求get与post的区别总结

    get传送数据要经过encodeURIComponent编码,防止乱码。 get方式,服务器端用Request.QueryString获取变量的值; post方式,服务器端用Request.Form获取提交的数据; 两种方式的参数都可以用Request来获得。

    关于Ajax请求中传输中文乱码问题的解决方案

    今天遇到一个问题,有关ajax 请求中传输中文,遇到乱码的问题。 如下代码: function UpdateFolderInfoByCustId(folderId, folderName, custId) { $.ajax({ type: "Post", contentType: "application/x-...

    Ajax学习文档(无门槛-精)Markdown File (.md)

    ajax-Post和Get请求与传统请求、ajax乱码问题、ajax同步异步、ajax代码封装jQuery库、跨域问题以及解决方案、ajax搜索联想 自动补全、附录:HTTP状态信息

    ajax实现excel报表导出

    利用ajax实现excel报表导出【解决乱码问题】,供大家参考,具体内容如下 背景 项目中遇到一个场景,要导出一个excel报表。由于需要token验证,所以不能用a标签;由于页面复杂,所以不能使用表单提交。初步考虑前端...

    AJAXRequest v0.2

    如果创建失败则返回false 属性:method – 请求方法,字符串,POST或者GET,默认为POST url – 请求URL,字符串,默认为空 async – 是否异步,true为异步,false为同步,默认为true content – 请求的内容...

    jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解

    当我们用javascript写ajax程序写得很“开心”的时候,突然有人告诉你有一种东西叫jquery,它会告诉你不直接和HttpRequest是多么的快乐,同时你再也不需要再烦恼纠结的ajax乱码问题,更幸福的是你的js代码将大大地...

    在Ajax中使用get和post所遇到的问题及解决办法

    乱码,当传递中文或者特殊字符的时候,前台显示出现乱码 解决办法:使用编码encodeURI(‘蜗牛’) 测试结果:通过使用Chrome测试,结果get的两种问题,都已经得到了解决 使用post遇到的问题:

    jquery+ajax无刷新评论源码

    做AJAX应用,jquery提供的$.get()、$.post()函数都可以用于提交数据,但建议使用$.ajax()来提交,那两个函数都不 提供错误返回信息,不利全面掌控。 提交数据是action代表要执行的操作,id传递文章id,page是请求的...

    Jquery的Ajax技术使用方法

    Jquery的Ajax技术(重点) jquery是一个优秀的js框架,...区别:get有字节码乱码问题,post无字节码乱码问题(获取请求页面数据到后台,后台response.setContextType(“text/html;charset=UTF-8”)响应乱码问题还与原来

Global site tag (gtag.js) - Google Analytics