帖子
帖子
用户
博客
课程
12下一页
返回列表 发新帖
显示全部楼层
2
帖子
0
勋章
13
Y币

[BUG] api.ajax回调函数参数err类型,安卓和ios不相同

[复制链接]
发表于 2017-4-25 10:31:57
本帖最后由 leeyxq 于 2017-4-25 10:33 编辑

api.ajax回调函数参数err类型,安卓和ios不相同
1.前提服务端返回200,成功
安卓:类型string的空字符串,ios:null
380
帖子
4
勋章
6
Y币
已反馈给相关技术查看。
28
帖子
1
勋章
1万+
Y币
既然成功了就看ret,你去看err干嘛
20
帖子
1
勋章
7581
Y币
在js中:
var aa = null;和 var aa = '';
如果做:
if(!aa){
alert('aa is empty');
}
都是会弹出alert的。
2
帖子
0
勋章
13
Y币
常山赵子云 发表于 2017-4-25 11:45
在js中:
var aa = null;和 var aa = '';
如果做:

这样是可以的,但是你api.post作为底层api,你不得保证平台的一致性吗?
if(!aa)
//aa=false,aa='',aa=null,均alert('aa is empty')
2
帖子
0
勋章
13
Y币
技术咨询-Kenny 发表于 2017-4-25 10:58
既然成功了就看ret,你去看err干嘛

首先,错误分两类
1.responseCode:200,服务端定义返回ret={ err:"xxxx数据不存在"}
2.responseCode:非200,err非空,一般有403,404,302啥的,这种情况,你只看err可以吗
20
帖子
1
勋章
7581
Y币
leeyxq 发表于 2017-4-25 14:04
首先,错误分两类
1.responseCode:200,服务端定义返回ret={ err:"xxxx数据不存在"}
2.responseCode:非 ...

淡定,js是弱型语言,null,'',false,0,undefine都可以作为逻辑false判断,所以不要纠结这个地方了,你好不容易找到个“大BUG”的心情我能理解。

http状态码不是只有200是ok的,400以下都是ok,可以到这里学习一些基本知识:http://tool**.**/commons?type=5

所以api.ajax在400以下都会通过ret返回,400及400以上就是发生错误了,会通过err返回,无论什么错误都会走err。
所以,api.ajax,有ret,就一定不会有err,有err就一定不会有ret,所以正确的用法:
if(ret){
//TODO
}
if(err){
//TODO
}
就和你使用JQ的ajax一样的,有success就肯定不会有error了。
2
帖子
0
勋章
13
Y币
常山赵子云 发表于 2017-4-25 14:33
淡定,js是弱型语言,null,'',false,0,undefine都可以作为逻辑false判断,所以不要纠结这个地方了, ...

我没有纠结啊,我只是说api.ajax,返回200的情况下,ios和安卓回调函数err为啥不一样?
2
帖子
0
勋章
13
Y币
常山赵子云 发表于 2017-4-25 14:33
淡定,js是弱型语言,null,'',false,0,undefine都可以作为逻辑false判断,所以不要纠结这个地方了, ...

状态码为400及400以上,通过err返回,这个说法,API文档里有吗?我没找着,你给我弄个状态码定义,常见的状态还是明白的。http状态码不只是200是ok,这种说法是哪里说得,还是apicloud自己定义的?因为不知道apicloud.ajax的具体实现,还望感谢告知
20
帖子
1
勋章
7581
Y币
本帖最后由 常山赵子云 于 2017-4-27 15:59 编辑
leeyxq 发表于 2017-4-27 15:19
状态码为400及400以上,通过err返回,这个说法,API文档里有吗?我没找着,你给我弄个状态码定义,常见的 ...

别钻牛角尖了,HTTP状态码相关的知识,是做开发的常识,不需要在文档中专门说明,有多余的时间应该去加强学习,你的问题可以百度。就像吃饭要用嘴,这是常识,所以一说吃饭就是用嘴吃,都是说“来吃饭啦”,而不是说“来用嘴吃饭啦”。如果你觉得这个已经严重影响到你,强烈建议你去用JQ或者zepto的ajax。该问题到此打住,勿再回,谢谢!
12下一页
您需要登录后才可以回帖 登录

本版积分规则