• uni.app小程序的ajax封装详细讲解


     我懒得说了

    1. //放url相同的片段
    2. const rootUrl = ""
    3. // 示例: ajax({ url:'/api/login', param: param, method: "POST" });
    4. export default function ajax(config, isLoading = true) {
    5. let url = rootUrl + (config.url || '');
    6. let param = config.param || {};
    7. let method = (config.method || 'GET').toUpperCase();
    8. let promise = '';
    9. const headers = {
    10. 'Authorization': 'Bearer '+ uni.getStorageSync('token') || null,
    11. ...config.headers
    12. };
    13. // isLoading ? uni.showLoading({ title: '加载中...', }) : ''; // 中心显示加载中弹窗
    14. return new Promise((resolve, reject) => {
    15. setTimeout( () => { // 通过定时器实现真正的异步请求
    16. uni.request({
    17. url,
    18. method,
    19. data: param,
    20. header: headers,
    21. success(res) {
    22. // console.log("ajax: res:", res);
    23. if(!res){
    24. reject('返回值已被您拦截!');
    25. return;
    26. }
    27. // 获取Token。注:Web端为authorization,小程序端为Authorization。
    28. if(res.header && (res.header.authorization || res.header.Authorization)){
    29. // console.log('authorization:', res.header.authorization);
    30. uni.setStorageSync('token', (res.header.authorization || res.header.Authorization));
    31. }
    32. if(res.statusCode !== 200){
    33. // console.log("请求返回的状态码非200: " + url + " : "+ JSON.stringify(res))
    34. reject(res);
    35. return;
    36. }
    37. // 返回的数据体
    38. if(res.data && res.data.err === 0 ){
    39. resolve(res.data.data || {});
    40. return;
    41. }
    42. else if( res.data.err >= 6000 && res.data.err <= 6999 ){
    43. // console.log("ajax: unlogin:", res.data.err)
    44. uni.showModal({
    45. title:'登录提示',
    46. content: res.data.msg || '您尚未登录',
    47. success(e) {
    48. // console.log("ajax: showModal:", e)
    49. if (e.confirm) {
    50. uni.redirectTo({
    51. url:'/pages/login/login-account'
    52. })
    53. }
    54. }
    55. })
    56. reject(res.data); //没登录点击我的 返回这个报错
    57. }
    58. else {
    59. reject(res.data); //如果没有登录 其他页面返回这个报错
    60. }
    61. },
    62. fail(err) { //接口失败调用
    63. console.warn('ajax: fail:', err)
    64. reject(err);
    65. return;
    66. },
    67. complete() { //
    68. // uni.hideLoading();
    69. uni.stopPullDownRefresh()
    70. },
    71. })
    72. }, 50);
    73. });
    74. }

  • 相关阅读:
    代码随想录二刷 Day23
    Spring
    分析性质+排列置换环+最小割:1024T4
    RK3568驱动指南|第六篇 -平台总线-第50章 平台总线模型介绍
    Spring之事务开发
    ​Vue + Element UI前端篇(二):Vue + Element 案例 ​
    c# .net linux ImageSharp+FastDFS+Base64上传图片,压缩图片大小,图像处理dcoker中使用也可以
    Maven 仓库地址
    C#平安对接之SHA256withRSA,以及AES128加密(平安仅java文档,有需要使用c#对接的可以参考下)
    C++的流和文件介绍
  • 原文地址:https://blog.csdn.net/qq_52421092/article/details/126663010