zepto ajax ios,使用zepto的ajax进行请求,contentType设置编码不生效?

我前端通过ajax请求后端接口,后端获取到的中文字段全是乱码。

我觉得是前端ajax请求的时候,设置编码可能没设置对。而且后端获取到了我的编码后,说的是给他的编码是

IS08859-1

的编码格式。

感觉是ajax请求的

contentType

这个字段。好像要设置成

contentType: 'application/json;charset=utf-8'

于是我按网上的这样设置了一下。

$.ajax({

url: xxx,

type: "GET",

contentType: 'application/json;charset=utf-8',

dataType: 'jsonp',

timeout: xxx,

data: xxx,

})

然后请求接口,但是在请求头信息里并没有看到我设置的

Content-Type

字段。

bVAn4G

请问为什么我这么设置的

contentType

字段不生效呢?还有前端请求上传数据该怎么设置编码格式为

utf-8

编码呢?

这是jQuery的做法,可以试试看。

$.ajax({

url: xxx,

type: "GET",

headers: {

"Content-Type": "application/json;charset=utf-8"

},

dataType: 'jsonp',

timeout: xxx,

data: xxx,

})

把中文

encodeURI/encodeURIComponent

(Url编码)一下,后端获取到数据后进行一次UrlDecode。

encodeURI('测试'); //%E6%B5%8B%E8%AF%95

encodeURIComponent('测试')

正常的中文数据传递都会进行

UrlEncode

一下,至于为什么Zepto的ajax会丢失掉contentType,请参考Zepto源码的《这里》(v1.2.0):

if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET'))

setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded')

请求类型不为get,并且传递了参数data,才能设置

contentType

我的个人网站:《听说》

3431402c1bcafac7e7cfb291f3f55629.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值