问题描述:
- 使用ajax二次请求时,报错:Unsupported Media Type;
- 同一段代码,第一次请求成功且正常,当再次刷新请求时报错;
- 在IOS端请求正常,不论刷新几次,结果显示正确;在Android端,只有第一次请求正常,再次请求报以上错误
核心代码如下:
mui.ajax(app.getIpaddr() + api,{
data:{ },
dataType:'json',//服务器返回json格式数据
type:'post',//HTTP请求类型
timeout:10000,//超时时间设置为10秒
crossDomain: true,
headers: {"authorization":"Basic "+btoa(app.getState().account+":")+app.getState().password},
success:function(data){
/* 返回数据逻辑处理 */
},
error:function(xhr,type,errorThrown){
plus.nativeUI.toast("网络故障");
}
});
已解决:
在header里加上类型"Content-Type":"application/x-www-form-urlencoded",保持前后台数据类型一致
headers: {"Content-Type":"application/x-www-form-urlencoded","authorization":"Basic "+btoa(app.getState().account+":")+app.getState().password},
疑问:
在mui文档里 ajax说明中有一句话:
processData
Type: Boolean
为了匹配默认的content-type("application/x-www-form-urlencoded"),
mui默认会将data参数中传入的非字符串类型的数据转变为key1=value&key2=value2格式的查询串;
如果业务需要,希望发送其它格式的数据(比如Document对象),可以设置processData为false
这里说明是ajax中,已经默认类型为application/x-www-form-urlencoded,为何还要单独写出来,
而且为何第一次可以正常请求,再请求就不行了,且只发生在Android端。此为两个疑惑没弄懂。
0 个回复