解决ajax回调函数返回的字符串乱码问题
找到问题了:
1、ajax请求失败,提示parsererror(到complete回调函数里看),所以不会执行success回调函数;
2、parsererror也就是说明数据解析出错了,也就是返回的数据格式有问题。post请求设置的格式是json,实际上返回的不是json;
实际返回的数据如下:
注意红色的部分,数据被压缩过了,当作json解析自然会出错;
3、如果把 post请求最后的 ‘json’ 参数去掉,会发现可以进入 success 回调函数,但此时response是个字符串而不是js对象,而且开头好像还有两个乱码,response.contents 成了 undefined。
--------
所以问题根源是:
服务端返回的是gzip压缩后的数据,不是json字符串。
问题就是这样的,解决方法考题主自己了。JQuery AJAX中文乱码问题解决
1、前后台编码要统一;
2、在使用gb2312编码时,不要用jquery的$.get()或$.post()做ajax提交,因为这两个方法默认为utf-8;
3、用$.ajax()并在其中加入:contentType:"pplication/x-www-form-urlencoded;charset=GB2312";写成以下形式
简述为什么用ajax发送请求会出现乱码问题
你如果没有使用编码集过滤器,
就需要手动设置response的编码集
response.setCharacterEncoding("UTF-8");
这句话要放在这个方法的最前面,就是设置返回头的前面
如果页面传入的参数,在获取时乱码,则需要
request.setCharacterEncoding("UTF-8");
ajax参数
ajax函数的参数有:
options、async、cache、contentType、context、data、dataFilter、dataType、error、global、ifModified、jsonp、processData等。
ajax get请求参数怎么加
在ajax的get请求中,参数可以通过在URL后面添加查询字符串的方式进行传递。
具体做法是在URL后面添加一个问号"?",然后在问号后面添加参数名和参数值,多个参数之间用"&"连接。
例如:在ajax的get请求中,参数可以通过在URL后面添加查询字符串的方式进行传递。
这样做的原因是因为get请求是通过URL来传递数据的,将参数添加在URL后面可以方便地将参数传递给服务器。
除了在URL后面添加查询字符串,还可以使用encodeURIComponent()函数对参数进行编码,以防止特殊字符对URL的影响。
另外,如果参数较多或者参数值较长,也可以将参数放在一个对象中,然后使用JSON.stringify()函数将对象转换为字符串,再通过URL后面的查询字符串传递给服务器。
在进行ajax get请求时,可以将参数添加在url后面,格式为?key1=value1&key2=value2。
也可以使用jQuery的$.ajax()方法,将参数以对象的形式传入data属性中,如:$.ajax({url: 'xxx', data: {key1: value1, key2: value2}})。
此外,还可以使用ES6的模板字符串来拼接url和参数,如:`xxx?key1=${value1}&key2=${value2}`。无论哪种方式,都需要注意参数的编码和安全性。
还没有评论,来说两句吧...