mui.ajax ios失败,mui苹果端开发出现Script error. filename: lineno:0

本来昨颠儿高高兴兴的,但是在更新功能的时候发现,一直没有测试的项目ios端出现的大问题,大概就是很多对接口的请求其实是无效的,也不报错也不返回任何有价值的信息,就是在控制台一个劲的提示Script error. filename: lineno:0。然后为了解决bug,从下午四点开始,改到了凌晨12点,其实主要的原因就是ios端有更严格的js规范(说白了就是卵用没半点,还严重影响开发的矫情,垃圾ios毁我青春),还有一点就是这个项目是个接盘项目,很多原本开发者放飞自我的写法让我头皮发麻,安装端的修bug封包已经够操蛋。

为了查找问题,真的心累了,ios开发时的控制台根本不告诉我哪里错了,在哪一行,就是不断的的Script error. filename: lineno:0,毫无帮助。

回归这篇文章的本身,在细致的查找审阅,测试后,主要的问题提现在原本的开发人员对接口数据的赋值上。

这是原本对于接口请求的案例。

1.在公共的dataService.js中,定义了所有的接口请求方法,以获取短信验证码为例。var membershipService = {

getVertifyCode: function (check_code_token,check_code,m_name,type) {

var res;

var vertify_code_url=ROOT_URL + '/m/mail/' + check_code_token + '/' + check_code + '/' + m_name + '/'+type;

mui.ajax(vertify_code_url,{

dataType:'json',

type:'get',

timeout:10000,

async:false,

success:function(data){

res=data;

},

error:function(xhr,type,errorThrown){

}

});

return res;

},

}

以上的代码通过console.log调试,已经证明接口请求是过去了,但是却没有让页面获取到。

2.在页面上,请求这个接口的方式是这样。var res=membershipService.getVertifyCode(check_code_token,check_code,m_name,"forgot");

其中的res就是返回的数组,这样写在安卓端是没有半点问题的,完全可行,但是在苹果端就是灾难的开始。其实我分析一波觉得这样写也没什么毛病,但是return后的值就直接为空了,所以前台res获取的也是为空的,就导致了后续的一系列错误,如果有大佬路过存在新的见解也可以留下发言。

正确的解决方法是如下。

1.那就是不在dataService.js中定义了,把mui的ajax请求方法完全重写一遍,完全无视那个文件,直接在页面上按照如下写法。var vertify_code_url;

vertify_code_url=ROOT_URL + '/m/mail/' + check_code_token + '/' + check_code + '/' + m_name + '/'+'forgot';

mui.ajax(vertify_code_url,{

data:{

},

dataType:'json',//服务器返回json格式数据

type:'get',//HTTP请求类型

success:function(data){

console.log(JSON.stringify(data));

这里获取到了data,就可以通过它来获取字段和写判断了

}

});

2.实际测试问题解决,不过对于vue和mui混合开发的app而言,里面有些还是要注意的,比如vue用的this.XXX赋值,要把this改为vue的创建方法名称,比如如下代码。var vm=new Vue({

//vue的方法

})

注意到vm没有,这就是名称,如果是mui的方法内要对vue的字段赋值,就要把this替换成vm,写成vm.XXX模式,其实这个问题已经在我上一篇关于mui的文章折腾过,只是没有注明。

文章就要这里,心累。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值