微信小程序 事件传递request能传递二维数组吗

求解 微信小程序 request
[问题点数:50分]
求解 微信小程序 request
[问题点数:50分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
请问 以下代码 wx.navigateTo如何获取wx.request的data
用this.data.*
直接undefined
请高手指点一二
小弟在此谢过!
//index.js
var config = require('../../config')
var util = require('../../utils/util.js')
//获取app变量
var app = getApp()
area: app.globalData.area,
areaIndex: 0,
fluid: app.globalData.fluid,
fluidIndex: 1,
circuit: app.globalData.circuit,
circuitIndex: 0,
train: app.globalData.train,
trainIndex: 55
bindareaChange: function (e) {
this.setData({
areaIndex: e.detail.value
bindfluidChange: function (e) {
this.setData({
fluidIndex: e.detail.value
bindcircuitChange: function (e) {
this.setData({
circuitIndex: e.detail.value
bindtrainChange: function (e) {
this.setData({
trainIndex: e.detail.value
formSubmit: function (e) {
wx.request({
url: `${config.service.host}/valid.htm`,
area: this.data.area[e.detail.value.area],
fluid: this.data.fluid[e.detail.value.fluid],
circuit: this.data.circuit[e.detail.value.circuit],
line: e.detail.value.line,
train: this.data.train[e.detail.value.train],
hist: e.detail.value.hist
//'content-type': 'application/json' // 默认值
"Content-Type": "application/x-www-form-urlencoded"
method: "POST",
success: function (res) {
//var that =//把this对象复制到临时变量that
console.log(data.area)
if (res.data === 'OK'){
wx.navigateTo({
url: '../addCgi/addCgi?area=' + this.data.area + '&fluid=' + this.data.fluid + '&circuit=' + this.data.circuit+ '&line=' + e.detail.value.line + '&train=' + this.data.train + '&hist=' + e.detail.value.hist,
//url: '../addCgi/addCgi?area=',
success(res) {
//util.showBusy(that.data.area)
fail(error) {
util.showModel('请求失败', error)
util.showModel('请求失败', res.data)
formReset: function () {
console.log('form发生了reset事件')
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可以在app里定义data,wx.request的时候设置app里的data,然后wx.navigateTo时获取这个data
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。多个页面传参通信在微信小程序中的实现-小程序开发-PHP中文网QQ群微信公众号还没有收藏多个页面传参通信在微信小程序中的实现刚接触微信小程序,对里面的语法和还不怎么了解,最近正在努力学习中,下面这篇文章主要给大家介绍了微信小程序中多个页面传参通信的相关资料,是最近学习的一个内容总结,需要的朋友可以参考借鉴,下面来一起看看吧。前言微信小程序越来越火,不少公司都在将原生代码转为微信小程序代码。在开发过程中,由于微信小程序wx.navigateBack方法并不支持返回传参,导致一些页面,尤其是从列表页面跳入详情页,用户在详情页改变了,返回后无论是否刷新页面,体验都不是很好。在中,我们一般采用setresult方法来返回参数,或者直接使用rxjava或者eventbus框架来解决此类问题。业务分析此类需求大概意思是:A页面进入B页面,B页面返回并给A。探索之路刚开始我想采用一个比较偷懒的方法,利用微信的wx.setStorage在B页面存储,返回A页面,在onshow方法里调用wx.getStorage读取缓存来实现此功能。但是想想解决方式过于投机取巧,也会给日后维护带来大量隐患。随后我在网上找到获取前一个page的方法,也可以实现此功能,部分代码如下:var pages = getCurrentPages();
var currPage = pages[pages.length - 1]; //当前页面
var prevPage = pages[pages.length - 2]; //上一个页面
//直接调用上一个页面的setData()方法,把数据存到上一个页面中去
prevPage.setData({
})仔细想了下,代码也不是很,因为进B页面的入口可能是多个,这样会导致获取的page出错。本来是没招了,突然想到微信小程序支持js,然后就找了个轻量级的js库,而且是,是我想要的类型。于是,好戏开始了onfire.js介绍onfire.js 是一个很简单的分发的库(仅仅 0.9kb),简洁实用。可以用于:简单的事件分发;在
/ vue.js / angular 用于跨组件的轻量级实现;事件订阅和发布;实践整理下思路如下:A页面先订阅一个事件,并定义处理方法。B页面返回时。A页面卸载时,解除订阅。A页面代码:var onfire = require(&../utils/onfire.js&);
var eventObj = onfire.on('key', function () {
//做具体的事
onLoad: function(options) {
// Do some initialize when page load.
onReady: function() {
// Do something when page ready.
onUnload: function (e) {
onfire.un('key');
onfire.un(eventObj2);
})直接调用onfire.on方法订阅一个名字为key的消息,并且无传参。如果需要传参的话,直接在function里增加参数即可,如var eventObj = onfire.on('key', function (data)... 。需要注意:一定要在onUnload里取消订阅key的消息,并取消绑定eventObj。B页面里代码在回调的地方加入 onfire.fire('key');//key为上文中订阅的消息
//有参数时
onfire.fire('key','test');分析库代码 function _bind(eventName, callback, is_one, context) {
if (typeof eventName !== string_str || typeof callback !== function_str) {
throw new Error('args: '+string_str+', '+function_str+'');
if (! hasOwnKey(onfireEvents, eventName)) {
onfireEvents[eventName] = {};
onfireEvents[eventName][++cnt] = [callback, is_one, context];
return [eventName, cnt];
}从代码中可以看出订阅on方法的时候实际调用_bind方法,该方法,主要是利用一个来存储订阅的。 function _fire_func(eventName, args) {
if (hasOwnKey(onfireEvents, eventName)) {
_each(onfireEvents[eventName], function(key, item) {
item[0].apply(item[2], args); //执行订阅时的方法
if (item[1]) delete onfireEvents[eventName][key]; // 当类型为只订阅一次时,通知后即移除自己。
}而fire发送消息方法实质调用_fire_func方法,通过名字key来遍历订阅者,然后通知订阅者。 function un(event) {
var eventName, key, r = false, type =
if (type === string_str) {
// 如果存在key值,则移除数组
if (hasOwnKey(onfireEvents, event)) {
delete onfireEvents[event];
else if (type === 'object') {
eventName = event[0];
key = event[1];
//如果找到这个对象则卸载
if (hasOwnKey(onfireEvents, eventName) && hasOwnKey(onfireEvents[eventName], key)) {
delete onfireEvents[eventName][key];
//否则返回false
else if (type === function_str) {
//两层循环来判断是否是方法名
_each(onfireEvents, function(key_1, item_1) {
_each(item_1, function(key_2, item_2) {
if (item_2[0] === event) {
delete onfireEvents[key_1][key_2];
}因为卸载支持按key、对象、方法卸载,所以需要先判断类型,然后按各自规则去解除绑定。总结以上就是多个页面传参通信在微信小程序中的实现的详细内容,更多请关注php中文网其它相关文章!共3篇773点赞收藏分享:.php.cn&猜你喜欢PHP中文网:独家原创,永久免费的在线,php技术学习阵地!
All Rights Reserved | 皖B2-QQ群:关注微信公众号微信小程序wx.request发送http/https请求及超时设置微信小程序wx.request发送http/https请求及超时设置亿仁网百家号目前我们还没有编写getMovieListData方法,现在在movie.js的页面中添加这个方法。getMovieListData接受3个参数:url、settedKey和categoryTitle。url被用来访问并获取电影数据,settedKey被用来作为不同类型电影数据绑定的key,categoryTitle被用来作为电影的分类标题,最终将被显示在movie-list-tpl的标题上。getMovieListData的核心代码是wx.request方法的使用,是小程序提供的发送http和https请求的方法,类似于传统JavaScript编程中所使用的ajax方法。wx.request(object)方法用于发送http/https请求,并接收服务器返回的请求结果。小程序中设置超时时间在app.json文件中配置这个超时时间:requset wx.request的超时时间,单位为毫秒,默认值为60000.我们可以在app.json中添加以下代码来设置各类请求的超时时间:当然,如果目前位置只使用wx.request请求,只设置requset这个配置项也是可以的。如果服务器在20秒内没有响应,那么wx.request将进入fail函数。本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。亿仁网百家号最近更新:简介:造物之前,必先造人。作者最新文章相关文章微信小程序数据请求方法 wx.request
wxml文件:
&textarea value="{{textdata}}"/&
&button bindtap="RequestData" value="Button"&Button&/button&
主要是一个按钮,点击后将请求的数据写入到textarea中
textdata:"put value",
RequestData:function(){
wx.request({
url: 'https://baidu.com',
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
// header: {}, // 设置请求的 header
success: function(res){
that.setData({textdata:res.data});
console.log(res.data);
fail: function() {
complete: function() {
// complete
RequestData函数,先将this保存下来,在sucess函数里将用保存的this来做请求数据的赋值。最后打印的控制台上。
&!DOCTYPE html&&!--STATUS OK--&
&不知道为什么只有这么一小节数据,按理说应该是一大串百度页面请求信息的。。。有待进一步学习。
阅读(...) 评论()

我要回帖

更多关于 微信小程序 传递参数 的文章

 

随机推荐