jquery ajax 的contentType怎么设置

jquery ajax 的contentType怎么设置,第1张

今天闲的无聊,把以前遗留的问题解决一下,比如让人头痛的Jquery乱码问题。其实这方面文章已经很多了,但全面解决各种问题的很少,今天总结一下,方便自己也方便大家。

原因很简单: 其实他的中文乱码就是因为contentType没有指定编码,对于不同Jquery的版本中这个地方有不同的设置,就拿我遇到的,jquery-1.6.1和jquery-1.8.3就有不同的定义。

解决办法:

在jquery-1.6.1文件中,搜索'contentType'

然后在application/x-www-form-urlencoded后面加上charset=UTF-8

最终变成contentType:"application/x-www-form-urlencodedcharset=UTF-8"即可。

这样通过post方法提交后会出现乱码的问题就可以完美解决。

果还有乱码现象,只能说你接收页面的编码也有问题,

这是由于异步对象XMLHttpRequest在处理返回的responseText的时候,是按UTF-8编码进行解码的。所以post方式的话,必须

把这个页面另存一下,将页面文件的编码改为 UTF-8 (请务必记住)。

JQuery Ajax提交出现中文乱码的解决办法2

前使用Jquery的时候一直没有发现,用Ajax提交的时候会出现乱码,我猜测可能是因为编码的原因

可能存在以下几点原因:

1.HTML的编码不统一:如页面用的GB2312,好像JQuery对它支持不太好。以前我一直都是用UTF-8的,一直都没有发现;

2.文件的编码,这个不好在表面上看到,简体中文版的 *** 作系统存的文本格式的文件默认是 GB2312,建议把文件换成UTF-8格式的

最简单的解决办法,把提交的中文文本用 JS的 escape 处理一下,就不会现出现乱码了。

解决的办法上用js的编码函数encodeURIComponent(string)处理一下,把中文"王晓明"编码成"%E7%8E%8B%E6%99%93%E6%98%8E",就OK了。

顺便说一下,我的tomcat下的URIEncoding=UTF-8

-------------------------------------------------------------------------------

今天在使用jquery检测用户名的时候,对英文和数字的用户名检测正确,但是对中文的时候,检测出错,经过在网上查询一段时间,终于找到了原因,是乱码问题,解决方法:

1、只要在ajax中有数据提交时,如果页面编码不是utf-8的,都应该对提交的数据进行编码,js的编码函数为escape()

2、在服务器端页接收数据后进行解码,然后对数据进行相关的处理后再编码

3、返回到客户端后再解码

4、如果没有提交数据,而是直接从服务器端获取数据,那直接在服务器页面设置Response.Charset="gb2312"即可,不用再编码解码

vbscript中分别对应js中的escape()和unescape()函数 程序代码

-------------------------------------------------------------------------------

通过以下处理方式得到解决:

传递参数的时候 对参数进行编码priceName="encodeURI(priceName)",也可以用encodeURIComponent()

服务器端无需做其他处理: String priceName = request.getParameter("priceName")

这个没办法实现, php设置这个相应头是给客户端浏览器看的.属于服务器端处理.

而js或是jquery属于客户端语言,是在浏览器已经解析完服务端相应值后再执行的语言.

这个时候,php的响应头已经被浏览器执行了.

jquery ajax中contentType参数的确会影响后台收到的数据,默认的话,如果json对象太复杂,会导致收不到,需要自定义一个数据类型:

application/x-www-form-urlencoded 这种形式是没有办法将复杂的 JSON 组织成键值对形式(当然也有方案这点可以参考 ) ,你传进去可以发送请求,但是服务端收到数据为空, 因为 ajax 没有办法知道怎样处理这个数据。

这怎么可以呢?

聪明的程序员发现 http 还可以自定义数据类型,于是就定义一种叫 application/json 的类型。这种类型是 text , 我们 ajax 的复杂JSON数据,用 JSON.stringify序列化后,然后发送,在服务器端接到然后用 JSON.parse 进行还原就行了,这样就能处理复杂的对象了。

$.ajax({

dataType: 'json',

contentType: 'application/json',

data: JSON.stringify({a: [{b:1, a:1}]})

})

这样你就可以发送复杂JSON的对象了。像现在的 restclient 都是这样处理的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7859548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存