个人喜欢AJAX传参,获得数据,正常写wx.request,在独立页面是可以正常使用的
var that = this
//调用数据结束
wx.request({
url: app.d.hostUrl + '/ajax/xcxAjax.ashx?MID=4&chaname=goods&channel=' + channelid+'&topnum=5&titlenum=10',
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
success: function (res) {
let getdata = res.data.rows;
console.log('getdata', getdata);
that.setData({
prolist2: getdata,//第一个data为固定用法,第二个data是json中的data
})
}
})
放入一个独立的JS里面 前端调用就会发现,显示数据始终为undefined,这个是由于微信小程序wx.request,是一个异步调用,因此用到了promise方法,
//小程序采取的是异步,不能直接获取参数值,需要用到Promise,案例如下,
function ceshi(ctname) {
let promise = new Promise(function (resolve, reject) {
wx.request({
url: app.d.hostUrl + '/ajax/xcxAjax.ashx?MID=1',
// data: params,
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
success: function (res) {
console.log('返回结果:');
console.log(res.data);
//app.netWorkData.result = res.data;
resolve(res.data);
reject("调用失败");
},
fail: function (res) {
console.log('返回结果:');
console.log(res.data);
//app.netWorkData.result = res.data;
resolve(res);
reject("调用失败");
}
})
});
return promise
}
//这还没完,前端调用和正常的写法有所改变,简化版的可以用Lambda表达式
前端的调用代码
const app = getApp()
var common = require("../../utils/common.js");
var util = require("../../utils/util.js");、
//以上三行属于引用
//简化版的
util.hyrequstGet('?MID=1').then((value) => { console.log('jiguo222', value);})
//非简化版的
util.hyrequstGet('?MID=1').then(
function(value)
{
console.log('jiguo333', value);
});
//前端调用then的使用,属于promise方法,
完整的一个get提交获取数据的方法
//二次简化封包
function hyrequstGet(url) {
return hyrequst(url, 'GET')
}
function hyrequstPost(url) {
return hyrequst(url, 'POST')
}
function hyrequst(url, method = {}) {
wx.showNavigationBarLoading()
method = method
return new Promise((resove, reject) => {
wx.request({
url: app.d.hostajax + url,
header: { 'Content-Type': 'application/json'},
method: method.toUpperCase(), // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
success: function (res) {
wx.hideNavigationBarLoading()
resove(res.data)
},
fail: function (msg) {
console.log('reqest error', msg)
wx.hideNavigationBarLoading()
reject('fail')
}
})
})
}
module.exports = {
formatTime: formatTime,
requstGet: requstGet,
requstPost: requstPost,
hyrequstGet: hyrequstGet,
hyrequstPost: hyrequstPost
}