微信小程序开发(一)微信开发者工具以及小程序框架介绍
微信小程序开发(二)开发之日历打卡小程序发现页
微信小程序开发(四)入门之打卡功能开发
上篇介绍了日历打卡小程序发现页视图相关开发知识点。本篇文章将介绍小程序的网络请求,数据绑定等知识点以及打卡活动的创建功能。
wx.request({
url: 'http://www.ho0229.cn', //接口地址
data: { //请求参数
x: '' ,
y: ''
},
header: { //请求头
'content-type': 'application/json'
},
success: function(res) { //请求成功回调
console.log(res.data)
},
fail:function(res){ //请求失败回调
console.log(res.data)
}
})
//POST请求封装
function Post(requestUrl, requestHandler) {
this.requestPost('POST', requestUrl, requestHandler)
}
function requestPost(method, requestUrl, requestHandler) {
var userId = wx.getStorageSync("userId");
var token = wx.getStorageSync("token");
var params = requestHandler.params;
wx.request({
url: requestUrl,
data: params, //post请求参数
method: method,
header: {
"authorization": authorization,
"Content-Type": "application/json"
},
success: function (res) {
requestHandler.success(res)
},
fail: function (res) {
requestHandler.fail(res);
},
})
}
module.exports = {
Get: Get,
Post: Post,
}
页面的js文件引入utils中导出的网络请求方法,以项目中为例,Get请求更加简单,只需要将参数拼接在requestUrl 上即可
const app = getApp() //获取应用实例
var utils = require('../../utils/util.js') //获取utils对象
Page({
onLoad: function () {
var dataUrl = app.globalData.laiSignBaseUrl + "xxx/firstPage"
var params = new Object(); //创建object对象,添加请求参数
params.uid = wx.getStorageSync('userId');
params.currentpage = this.data.currentpage;
utils.Post(
dataUrl, //用utils对象调用Post方法
{
params, // post请求的参数
success: function (res) { // 返回成功
if (res != null && res.data != null && res.data.success) {
//绑定数据操作
}
},
fail: function (res) {
},
})
},
})
wx.chooseImage({
count: 1, //选择张数
sizeType: ['original', 'compressed'], // 原图,压缩图片
sourceType: ['album', 'camera'], //相机或者拍照
success: function (res) {
var pages = getCurrentPages(); //获取当前所有页面的实例
var prevPage = pages[pages.length - 2]; //获取到上个页面的page实例
wx.uploadFile({
url: app.globalData.laiSignBaseUrl + "xxx/upload/img/pic",
filePath: res.tempFilePaths[0], //选取后图片地址 这里返回的是腾讯服务器上的一个临时图片地址
name: "file",
success: function (res) {
var data = JSON.parse(res.data); //上传成功返回值,注意:这里不是图片的Url,需要解析
if(data != null && data.success){
prevPage.setData({ //上个页面的实例设置一个图片封面的值
coverUrl:data.result[0]
})
}
wx.navigateBack(); //返回到上个页面
},
fail: function (res) {
// console.log(res)
}
})
},
})
2. 活动图片实现
wxml :
wxss :.erasable-layout {
position: relative;
margin-right: 50rpx;
width: 100rpx;
height: 100rpx;
}
.image{
width:100%;
height:100%;
}
.delete-icon {
width: 25rpx;
height: 25rpx;
position: absolute;
left: 87rpx;
top: -5rpx;
}
// rich-text.js
Page({
data: {
nodes: [{
name: 'div',
attrs: {
class: 'div_class',
style: 'line-height: 60px; color: red;'
},
children: [{
type: 'text', //还有node类型
text: 'Hello World!'
}]
}]
},
})
元素节点:type = node
属性 说明 类型 必填
name 标签名 String 是
attrs 属性 Object 否
children 子节点列表 Array 否
nodes: [{
name: 'div',
attrs: {
class: 'div_class',
style: 'line-height: 60px; color: red;'
},
children: [
{
type: 'text', //还有node类型
text: 'Ho CSDN Rich-Text!'
},
{ //图片1
type: 'node',
name: 'img',
attrs: {
class: 'div_class',
style: 'display:block;magin:0 auto;',
src: 'http://ho_csdn_node_image1.png',
width:'100%'
},
},
{ //图片2
type: 'node',
name: 'img',
attrs: {
class: 'div_class',
style: 'display:block;magin:0 auto;',
src: 'http://ho_csdn_node_image2.png',
width:'100%'
},
}
}
}]
wx.uploadFile({
url: app.globalData.laiSignBaseUrl + "xxx/upload/img/pic",
filePath: filePath,
name: "file",
success: function (res) {
var paramsOut = new Object(); //children子Obect
paramsOut.type = "node";
paramsOut.name = "img";
var paramsInner = new Object(); //attrs
paramsInner.style = "display:block;margin:0 auto;margin-top:8px;color:red;font-size:12px" //图片属性
paramsInner.src = JSON.parse(res.data).result[0] + ""; //图片url
paramsInner.width = "100%"; //图片宽度
paramsOut.attrs = paramsInner;
tempNodesDatas.push(paramsOut); //Object添加到children数组中
that.setData({
nodesDatas: that.data.nodesDatas.concat(tempNodesDatas)
}
console.log("nodeDatas", that.data.nodesDatas)
},
fail: function (res) {
}
})