如何解决JQuery ajaxSubmit提交ajax提交的中文乱码码

JQuery中Ajax的Post提交在IE下中文乱码的解决方法
转载 & & 作者:
在JQuery的Ajax POST请求中,进行请求,其中的中文在后台,显示为乱码,在FF/Chrome中,可以正常传递中文,但是在IE下,则存在问题
引言: 在JQuery的Ajax POST请求中,进行请求,其中的中文在后台,显示为乱码,该如何解决呢? 问题的引入:
代码如下: var regid = $('#oregion').combobox('getValue'); //var sname = $('#sname').val(); var sname = encodeURI($('#sname').val(),"UTF-8"); if(regid!=""&&regid!='undefined'){ $.ajax({ async: true, type : "POST", dataType : "json", url : "&%=request.getContextPath() %&/secretary/isHasUser.do?regid="+regid+"&sname="+sname, success : function(data) { if(data.mes!=""&&data.mes!=null){ $.messager.alert('Warning',data.mes);
} } }); } }
以上的代码在FF/Chrome中,可以正常传递中文,但是在IE下,则存在问题,在后台输出的信息为乱码。 问题尝试办法: 1. 设置了 contentType: "text/ charset=utf-8", 问题依然存在 2. 重新检查了ajax代码所在的jsp页面,皆为使用utf-8,但是问题依然存在 3. 在后台的java代码中,强制使用utf-8、gbk、gb2312的编码转换, 问题依然存在 经过分析,判断其可能与浏览器或者JQuery中的内容传输有关,目前也无法准确的确定。 解决的办法: 前段:encodeURI($(dom).val(), "UTF-8"); 使用encodeURI进行编码 后端Java代码: URLDecoder.decode(inputStr,"UTF-8"): 后端代码针对前段传递过来的字符串,进行解码。 总结: 最后就可以针对Ajax Post请求传递过来的字符串信息,就可以正常显示中文了。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具论文写作技巧
页面编码为GBK时 jquery 提交ajax数据完美解决中文乱码方案.zip☆您的下载就是我的心愿,希望这个资料可以帮到您;☆下载完后请记得好评哦,您的好评就是我的动力,我会更加努力整理资料,提供更多的帮助给大家!!☆更多资料请访问:http://www.shangxueba.com/store_.html祝您生活愉快,家庭幸福!!O(∩_∩)O~
您可能需要的
[] [] [] [] [] [] [] []博客分类:
jquery.form.js用来提交表单是比较好用的,但由于它是用ajax来提交(即使用到utf-8),所以对于中文来说还是比较蛋疼,会有乱码,网上有不少人说到用过滤器(针对java的),也有些人说要在serlevt中增加编码转换,另外还有人说可以从js中解决。我是选择了最后一总,简单容易。下面是demo:
&script type="text/javascript" src="/js/jquery.form.js"&&/script&
&script type="text/javascript"&
$(document).ready(function() {
var options = {
contentType: "application/x-www-form-charset=utf-8",
success: showResponse
$('#addForm').submit(function() {
alert("submit");
$(this).ajaxSubmit(options);
......................
&form method="post" action="/activity/add" id="addForm"&
......................
最关键就是增加了contentType: "application/x-www-form-charset=utf-8" 这行代码。
为什么需要增加这一条呢?在这个
在Firefox中,Content-Type指定了字符集为utf-8。而在IE中是不指定(似乎chrome也没有),所以就会导致乱码。
另外:jquery中使用ajax做post提交,同样会出现这个问题,同样的解决办法
type: op.type || 'GET',
url: op.url,
data: op.data,
cache: false,
contentType: "application/x-www-form-charset=utf-8",
success: function(response){
浏览: 189959 次
来自: 广州
gloryfuture_taiyuan 写道不能用啊,我用的是 ...
gloryfuture_taiyuan 写道不能用啊,我用的是 ...
不能用啊,我用的是cordova3.2,大侠能不能我指点指点呢 ...
不用拷贝jar,只需要按照2.1的格式生成类即可wsdl2ja ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博客分类:
最近的开发中遇到了jquery异步提交表单数据时出现了中文乱码的问题。先说一下开发环境,本地编码格式为GBK(服务器为本机,因此服务器端的编码格式也是GBK了),webwork框架默认编码也是GBK。
第一次出现乱码时,尝试着将webwork的默认编码修改为UTF-8。这样服务器端所接收到的中文字符正常显示,可以确定webwork的参数拦截器在进行参数注入时,客户端所提交的中文数据已经变为乱码,修改webwork的默认编码集显然是不合理的。
首先想到的是使用encodeURI()函数在客服端对用户提交的数据项进行编码,服务器端再用URLDecode类解码。但由于客户端所提交的数据项比较多,对每个数据项都进行编解码会产生大量的与业务无关的代码。最终想到了使用webwork中提供的域模型去接收分散的数据类型,这样可以统一在服务器端对domain实体中的每个属性值进行解码。以下是具体的实现:
$("input[type='text']").each(function(){
$(this).val(encodeURI($(this).val()));
//表单提交前对每个text控件的value采用encodeURI函数编码
$("#subForm").ajaxSubmit(options);
//subForm为要提交的表单的id
//表单提交后,立即解码,防止用户看到编码后的数据
$("input[type='text']").each(function(){
$(this).val(decodeURI($(this).val()));
import java.io.UnsupportedEncodingE
import java.lang.reflect.F
import java.lang.reflect.InvocationTargetE
import java.lang.reflect.T
import java.net.URLD
import java.util.ArrayL
import java.util.L
import org.apache.commons.beanutils.BeanU
* @describe: 对javabean中指定类型的属性按照指定的编码集解码
* @author:
上午10:44:24 create
public class Decoder&T& {
* 在指定的Class中获取指定Type的属性名
* @param objClass 指定与对象相关联的Class
* @param type
对象的属性类型
private List&String& getPropertyNames(Class objClass, Type type) {
Field[] fields = objClass.getDeclaredFields();
List&String& propertyNames = new ArrayList&String&();
for (Field f : fields) {
if (f.getType().equals(type)) {
propertyNames.add(f.getName());
return propertyN
* 按照charset字符解码obj对象中属性类型为指定type的属性值
* @param obj
需解码的javabean
* @param charset 解决字符集
* @param type
需解码的属性类型
返回解码后的javabean
public T decode(T obj, String charset, Type type) {
List&String& propertyNames = getPropertyNames(obj.getClass(), type);
for (String name : propertyNames) {
String str = BeanUtils.getProperty(obj, name);
if (str == null)
BeanUtils.setProperty(obj, name, URLDecoder
.decode(str, charset));
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
在服务器端构建一个domain对象的Decoder,再调用decode方法对指定类型的属性值进行解码。目前Decoder只支持基本数据类型和String类型数据的解码。
nirvana1988
浏览: 106614 次
来自: 郑州
必须给你点赞,很好的解决了我的问题!
测试发现:不支持 Safari、Chrome(既不支持“win ...
如果传的字符串的格式是这样的就会有问题:String str
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'15:17 提问
jquery中$form.ajaxSubmit( { })
jquery中$form.ajaxSubmit( { }),这个里面能不能function(r),即能不能写成$form.ajaxSubmit(function(r){ })? 在火狐中加了没问题,但在IE8中加了就取不到function(r)中的r,r是提交后action返回的结果,求大神帮忙!!!在线等
按赞数排序
你的使用场景呢。ie9-是不支持html5的formdata的,这个jquery.form做了判断。如果是ie9-包含文件时用表单提交到iframe来模拟ajax,支持formdata的才是ajax提交。
获取不到可能是你提交的url地址跨域了,这样无法获取到iframe的内容。ajax的话跨域地址配置过响应头后是可以跨域获取返回值的
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐}

我要回帖

更多关于 ajax提交乱码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信