1***@qq.com
1***@qq.com
  • 发布:2019-12-11 11:18
  • 更新:2019-12-11 11:18
  • 阅读:866

AJAX请求问题: Unsupported Media Type

分类:MUI

问题描述:

  • 使用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端。此为两个疑惑没弄懂。

2019-12-11 11:18 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复