小程序快速入门到项目开发 7 (网络通讯和数据解析)

你好,【程序职场】专注于:Spring Boot ,微服务 和 前端APP开发,闲暇之余一起聊聊职场规划,个人成长,还能带你一起探索 副业赚钱渠道,在提升技术的同时我们一起交流 敏捷流程 提高工作效率,从技术到管理一步步提升自我!
 
标签:一个执着的职场程序员!

1.请求接口说明
 小程序官方给出的接口函数叫做wx.request,请求方式提供比较简单,下面是官网给出的请求实例。

wx.request({

  url: 'test.php', //仅为示例,并非真实的接口地址

  data: {

     x: '' ,

     y: ''

  },

  header: {

      'content-type': 'application/json'

  },

  success: function(res) {

    console.log(res.data)

  }

})

 

·  url:请求的接口地址

·  data:请求参数

·  header:请求头,包括host、User-Agent、Accept、Accpt-Language、Referer等

·  method:请求方式:POST/GET

·  success:当接口请求成功时,小程序就会自动触发这个函数,获取的是从服务器返回的数据(json)。请求成功后获取到的数据就是success函数的参数result。

·  fail:当接口调用失败时,小程序就会触发这个函数,返回错误信息

·  complete:接口调用结束的回调函数(调用成功、失败都会执行),通过that.setData将数据传递给WXML页面。

 

 

  1. 请求接口方式

接口请求大都作为工具类调用,文件名称util,函数名称为getReqreq
通过 module.exports 提供了暴露接口的方法
module.exports = {

req: req,

getReq: getReq,

};


(一)get请求方式
//get请求方式

function getReq(url, data, cb) {

try {

const token = wx.getStorageSync('bus_token');

if (token) {

// Do something with return value

console.debug('token111=' + token);

}

// data.appid = AppConf.appid;

// data.appsecret = AppConf.appsecret;

wx.request({

url: rootDocment + url,

data: data,

method: 'get',

header: {

'Content-Type': 'application/x-www-form-urlencoded',

'authorization': token,

},

success: function (res) {

return typeof cb === 'function' && cb(res.data);

},

fail: function () {

return typeof cb === 'function' && cb(false);

},

});

} catch (e) {

// Do something when catch error

}

}

 

(二)post请求方式
//post请求方式

function req(url, data, cb) {

try {

const token = wx.getStorageSync('bus_token');

if (token) {

// Do something with return value

console.debug('token111=' + token);

}

data.appid = AppConf.appid;

data.appsecret = AppConf.appsecret;

wx.request({

url: rootDocment + url,

data: data,

method: 'post',

header: {

'Content-Type': 'application/x-www-form-urlencoded',

"authorization": token

},

success: function (res) {

return typeof cb === 'function' && cb(res.data);

},

fail: function (error) {

console.debug(error);

return typeof cb === 'function' && cb(false);

},

});

} catch (e) {

// Do something when catch error

}

}

 

3.接口调用

(一)get请求调用

  • post请求调用




    4.接口分页调用
    (一)设置分页参数



    (二)设置刷新的配置,设置后会自动调用下拉效果

  • (三)刷新函数说明



    1.顶部和底部刷新效果初始化,默认下拉刷新效果消失,更多效果隐藏
    2.加载状态添加 通过 showLoading
    3.调用接口函数
    4.刷新成功后界面状态变化
  • (四)加载更多函数说明


    1.顶部和底部刷新效果初始化
    2.加载状态判断,判断是否还有加载更多的条件
    3.页码++和调用接口函数
    4.刷新成功后界面状态变化

5.接口数据解析
小程序的数据分为两种:对象,数组。
1.对象解析可以直接获取对象中信息 例如:

{

"code": "123",

"message": "请求成功"

}

 

wx.request({

url: 'http://www.intmote.com/myproject/test/new_file.json',

header: {

'content-type': 'application/json'

},

success: function (res) {

console.log(res.code)

that.setData({

goldData: res.code,//获取对象中code信息

})

}

})

2.数组解析

{

"code": "123",

"message": [

{

"code2": "123",

"message2": "请求成功"

},

{

"code2": "123",

"message2": "请求成功"

}

]

}

 

获取message数组的信息和获取数组中第一个数据对象信息


wx.request({

url: 'http://www.intmote.com/myproject/test/new_file.json',

header: {

'content-type': 'application/json'

},

success: function (res) {

console.log(res.code)

that.setData({

goldData: res.message,//获取数组集合信息
goldData2: res.message[0].code2,//获取数组中第一个对象中的code2数据信息

 

})

}

})

6.var let const 区别
(一)let
用let的方式声明的变量,为局部变量,该变量只会在最靠近{ }内的范围有效,出了{}之后,该变量就不能够再用了,否则会报该变量未定义的错误。也就是说,该变量的作用域为所在的代码块内。


//index.js//获取应用实例const app = getApp()

 

Page({

  data: {

  },

 

  onLoad: function () {

    console.log('App onLoad');

 

    // 用let的方式声明的i只在for循环内有效,在for循环外引用就会报错i未定义的错误

    for (let i = 0; i < 20; i++) {

      console.log('for循环里面的i的值为'+i);//正常输出

    }

    console.log(i);//异常报错

  },

})

(二)var
用var的方式声明的变量,为全局变量,其作用域为所在的函数内。所以重点来了,在当前JS文件的其余函数中,如果直接拿来用,也会报变量未定义的错误。详情请看下面的var的错误使用方式。

Page({

  data: {

    name: '新增参保人',// name的默认值

  },

  addPerson: function (event) {

    // this.data.name = '保存'

    this.setData({

      name: '保存'

    })

  },

  onLoad() {

    console.log('App onLoad');

    // 用var的方式声明的i在onLoad函数内都有效,在其余函数中是没有效果的哦。

    for (var i = 0; i < 10; i++) {

      console.log('for循环里面的i的值为' + i);//输出 0-9

    }

    console.log('onLoad函数中i的值' + i);//输出10

  },

})


var的错误使用方式
在index.js文件的addPerson:函数中,打印在onLoad函数中声明的var变量i,就会报报变量i未定义的错误。



Page({

  data: {

    name: '新增参保人',// name的默认值

  },

  addPerson: function (event) {

    // this.data.name = '保存'

    this.setData({

      name: '保存'

    })

    console.log('addPerson函数中i的值'+i);//异常报错

  },

  onLoad() {

    console.log('App onLoad');

    for (var i = 0; i < 10; i++) {

      console.log('for循环里面的i的值为' + i);

    }

    console.log('onLoad函数中i的值' + i);

  },

})
 

(三)const

用于声明常量,也具有块级作用域 const PI=3.14;
注释:
针对小程序的文章  会一直更新下去,从入门到真实项目开发,代码都在同一仓库。

文中所有的代码:代码库中包含多个项目代码,该文章 查看 代码  demo2

https://github.com/chenjianpeng/project.git
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉默的闪客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值