1***@qq.com
1***@qq.com
  • 发布:2021-08-23 18:25
  • 更新:2023-04-20 13:21
  • 阅读:1009

mui ajax 请求 在ios13后出现 abort 问题

分类:MUI

前些天调试项目,原本在Android端开发后的代码,发现在ios13就请求不了,查了文档才发现

为适应iOS13起苹果公司将UIWebview列为私有API的问题,从HBuilderX 2.2.5+版本已将iOS上默认内核由UIWebview调整为WKWebview。但WKWebview有更严格的跨域限制,普通xhr或ajax联网会报错:Script error.filename:lineno:0错误;此时必须使用plus.net.XMLHttpRequest,详见:https://ask.dcloud.net.cn/article/36348,所以在WKWebview下,请务必在plus ready后再调用mui.ajax,(注意这一句,plus reday 后才执行

后来我根据上述调整了代码

mui.plusReady(function() {  
                mui.ajax('http://server-name/login.php',{  
    data:{  
        username:'username',  
        password:'password'  
    },  
    dataType:'json',//服务器返回json格式数据  
    type:'post',//HTTP请求类型  
    timeout:10000,//超时时间设置为10秒;  
    headers:{'Content-Type':'application/json'},                    
    success:function(data){  
        //服务器返回响应,根据响应结果,分析是否登录成功;  
        ...  
    },  
    error:function(xhr,type,errorThrown){  
        //异常处理;  
        console.log(type);  
    }  
});  
            });

发现还是报错,后面经过查询其他贴纸发现,在mui.ajax 还需要加上crossDomain : true //强制5+ 跨域后解决!!!

mui.plusReady(function() {  
                mui.ajax('http://server-name/login.php',{  
    data:{  
        username:'username',  
        password:'password'  
    },  
    dataType:'json',//服务器返回json格式数据  
    type:'post',//HTTP请求类型  
    timeout:10000,//超时时间设置为10秒;  
        crossDomain: true, //强制使用5+跨域    
    headers:{'Content-Type':'application/json'},                    
    success:function(data){  
        //服务器返回响应,根据响应结果,分析是否登录成功;  
        ...  
    },  
    error:function(xhr,type,errorThrown){  
        //异常处理;  
        console.log(type);  
    }  
});  
            });
1 关注 分享
老哥教教我

要回复文章请先登录注册

YangZhenfu

YangZhenfu

我遇到了同样的问题,使用crossDomain强制跨域可以解决
2023-04-20 13:21