9***@qq.com
9***@qq.com
  • 发布:2020-04-09 18:35
  • 更新:2020-04-17 22:39
  • 阅读:985

mui.ajax 传formDate 到java后台,后台拿不到值,安卓上没有问题

分类:HBuilderX
mui

mui.ajax(host2+'opinion/addAppOpinion.do',{
data:formData,
type:'post',
dataType:'json',//服务器返回json格式数据
processData: false,
contentType: false,
success:function(data){
console.log("提交意见反馈返回信息:"+JSON.stringify(data));
if (data.code == 0) {
mui.toast("提交成功");
} else {
mui.toast("提交失败,请重新提交");
}
},
error:function(xhr,type,errorThrown){
console.log("提交意见反馈错误:"+JSON.stringify(xhr));
}
});

2020-04-09 18:35 负责人:DCloud_App_Array 分享
已邀请:
1***@qq.com

1***@qq.com

研究了两天才知道原因:
这个问题是因为wkwebview环境下mui.ajax使用了net.plus.XMLHttpRequest做网络请求的,然而net.plus.XMLHttpRequest,上传formData的时候,设置contentType=multipart/form-data也是无效的,希望官方帮忙解答一下

因为iOS官方后面会废弃UIWebview,所以使用WK还有一些坑要填

具体参考下面代码,相同的代码,使用原生的XMLHttpRequest就可以上传成功:

//创建xhr,使用ajax进行文件上传
// var xhr = (mui.os.plus)?new plus.net.XMLHttpRequest():new XMLHttpRequest();
var xhr = new XMLHttpRequest();
xhr.open("post",BASEURL+THUploadUrl);
xhr.withCredentials = true;
//回调
xhr.onreadystatechange = function () {
if (xhr.readyState == 4){
if(xhr.status >= 200 && xhr.status < 300 || xhr.status == 304){//请求成功
console.log(xhr.responseText);
}else{//请求失败
console.log(xhr.readyState);
}
}
}
//获取上传的进度
xhr.upload.onprogress = function (event) {
if(event.lengthComputable){
var percent = event.loaded/event.total *100;
console.log("上传进度:"+percent);
}
}
//将formdata上传
xhr.send(formdata);

DCloud_heavensoft

DCloud_heavensoft

官方更建议使用uni-app,wkwebview下做app不行,功能、性能都不行

  • 7***@qq.com

    new plus.net.XMLHttpRequest()传formDate 那有没有解决方案?项目用5+做了两年了没法办说直接换成uni-app

    2020-06-24 11:12

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