微信开发怎么取url中的参数

2015-09-17 14:47:20 kevilin 阅读数 3379

1.背景介绍

根据公司业务需求,基于微信公众号做了一套虚拟充值的卖卡功能,除了需要调用自己的接口,还需要调用微信的发红包等接口,但是接口采用的编码格式不统一,造成了在解析url参数返回数据时出现乱码问题,造成微信发送红包失败。

2.解决办法

1)在网上找了很多的办法,第一个就是在接收数据的界面,进行url参数的解码,

 string URLDecode = HttpUtility.UrlDecode(URLEncode);

通过这个方法没有解决我的问题,完全无效。


2)在web.config中配置全局的编码格式为GB2312,但是又会影响其他界面。这个方法对我的功能有效,但是影响其

他界面,也没有解决问题。如下配置:

  <system.web>
    <globalization requestEncoding="GB2312" responseEncoding="GB2312"/>
  </system.web>

3)在web.config中配置指定界面的编码格式为GB2312,解决的自己的编码格式的问题,又不影响其他界面,如下配

置:

 <location path="指定的界面">
    

<system.web>
    

  <globalization fileEncoding="GB2312" requestEncoding="GB2312" responseEncoding="GB2312" culture="zh-CN"/>
   

</system.web>
 

</location>


3.总结

这个问题困扰了好久,一开始采用了全局编码格式统一的方法,对于网站后台造成了乱码的影响,没办法的情况下,


只好先接受我这个界面不能解决的,后来其他功能都做好了,我就专心来找解决办法,好在找到了,现在项目已经部


署使用了。


之前一直做的都是winform的开发,第一次接受js+H5站而且还是基于微信的开发,需要学习的地方很多,在努力中


,本文章主要是本人在做项目过程中遇到的问题的解决办法,如果有更好的解决办法,可以留言共同交流。

2017-07-01 18:06:36 xiejunna 阅读数 19442

在微信公众号开发中,有这么一个场景,点击模板消息中详情url进入到第三方的界面的问题,不知道别的大神是怎么做的,我第一种方法是,老老实实的按照官方文档去做。

方法1:通过网页授权,获取到code,再通过code获取openid,再根据openid请求接口,获取自己需要的参数。https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=第三方url&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
这样做在实际开发中受到了很大限制。

方法2:需要的参数直接在上面的url中携带。当然需要自己处理一下,直接一次传很多参数,js获取不到,传递一个是可以获取到的,没弄明白为什么。

传递一个参数:(这样可以直接在js里获取到这里传递的一个参数mcssn)
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3aa9835c4b466364&redirect_uri=http://ip:port/view/index.html?mcssn=11111111111111111111&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect

传递多个参数:(只获取到了一个,不知道为什么)
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3aa9835c4b466364&redirect_uri=http://ip:port/view/index.html?mcssn=11111111111111111111&teacct=123456&mccode=22222222&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect

传递多个参数:(想办法处理一下,自己的多个参数不用&连接,我这里用*连接了)
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3aa9835c4b466364&redirect_uri=http://ip:port/view/index.html?mcssn=11111111111111111111*teacct=123456*mccode=22222222&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect

这样在js里可以用var urlSearch = location.search; 来获取传递过来的参数。这里直接贴出了写的方法:

//调用方法
$(document).ready(function(){
var mcssn = getUrlParams("mcssn");
var teacct= getUrlParams("teacct");
var mccode= getUrlParams("mccode");
console.log(mcssn);
console.log(teacct);
console.log(mccode);
}); 

function getUrlParams(names) {
//获取?后面的参数
   var urlSearch = location.search;
   var urlValue="";
   //以?*&来拆分
   var params = urlSearch.split(/[?*&]/);
    for(var i=0;i<params.length;i++){
    //如果url参数里包含传递过来names字段,则取=后面的部分
        if(params[i].indexOf(names) >= 0 ){
            urlValue=params[i].split("=")[1];
            return urlValue;
        }
    }

   return urlValue;
}   
2018-01-02 23:04:12 qq_35909852 阅读数 54318

首先祝各位搞iT的兄弟,新的一年技术越来越牛逼,迟来的祝福,还请谅解。
今天我一个朋友问我小程序怎么获取url的参数,刚开始我有点懵了,因为小程序写完时间太长了,我都忘了,居然告诉他用的是下面的这个函数

 function getUrlParam(name){
         // 获取参数
        var url = window.location.search;
          // 正则筛选地址栏
        var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
          // 匹配目标参数
        var result = url.substr(1).match(reg);
         //返回参数值
     return result ? decodeURIComponent(result[2]) : null;
 },

这个是js获取的函数,后来我想了想看了之前写的源码才想起来,小程序获取url参数是这样的

onLoad: function (options) {
    console.log(options)
}

这个是我的截图
wxml
两个箭头值得是url携带的参数
这里写图片描述
获取到的url参数
这里写图片描述

哦了,以上就是鄙人拙见,如有出入,还请指正,谢谢!!!

2017-06-01 18:05:02 ltf857 阅读数 557

微信开发文档微信开发
notify_url:异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。

经过测试可以不带参数的’接口’传给商户服务器,如果支付成功,微信会返回具体信息,比如订单号,是否成功等等 …

2017-04-20 20:46:15 qq_24023703 阅读数 20622

叨叨两句

在之前的博客中glacier简单的介绍了一下微信小程序,并且写了个Demo带大家入了个门;
点击回顾

这次我们学习下微信小程序很重要的一点,URL传参。

干货

app.js

App({
  onLaunch: function () {
    console.log('App Launch')
  },
  onShow: function () {
    console.log('App Show')
  },
  onHide: function () {
    console.log('App Hide')
  }
})

app.json

{
  "pages":[
    "pages/index/index",
    "pages/flowers/flower"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#BBDEF8",
    "navigationBarTitleText": "Glacier",
    "navigationBarTextStyle":"black",
    "backgroundColor": "#f7f7f7"
  },
}

以上是最基础的配置小伙伴们不要忘了在pages里面加上我们需要用到的页面

index.js

var flag = 0;
Page({
  data:{
    // text:"这是一个页面"
    //这是一个变量的数组,这个里面申请的变量都可以在 wxml中使用
  },
   click:function(event){
   console.log("点击了文字");//这行是为了测试,点击事件有没有过来
   flag = event.currentTarget.id;//获取到id
   console.log(flag);
   wx.navigateTo({url:'../flowers/flower?id='+flag});
  },
  onLoad:function(options){
    // 页面初始化 options为页面跳转所带来的参数
    console.log("Page onLoad");
  }
})

index.wxml

<view>
<image class="image_frame" src="url地址" mode="aspectFill" catchtap="click" id="1" > </image>
<image class="image_frame" src="url地址" mode="aspectFill" catchtap="click" id="2" > </image>
<text class="footer">更多内容持续更新中...</text>
</view>

index.wxss

.userinfo {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.userinfo-avatar {
  width: 128rpx;
  height: 128rpx;
  margin: 20rpx;
  border-radius: 50%;
}

.userinfo-nickname {
  color: #aaa;
}

.usermotto {
  margin-top: 200px;
}
.window{
  color:#4995fa;
}
.window-red{
  color:#D23933;
}
.image_frame{
  width: 200rpx;
  height: 200rpx;
  margin: 20rpx 10rpx 0 30rpx;
  display: inline-flex;
}
.footer{
  display: flex;
  flex-direction: row;
  justify-content: center; 
  align-items: center;   
  font-size: 25rpx;
  color: #ccc;
  margin:20rpx 0 0 0;
}

flower.wxml

<view class="classname">
<image src="{{imgUrl}}" mode="widthFix" style="width:750rpx"></image>
</view>

这里{{imgUrl}}这种用法上次已经说过了,这种用法类似于变量,不过要在js文件中定义,然后再wxml文件中才能引用。再js文件中修改了之后别忘了使用this.setData刷新一下这个变量。

flower.js


//设置一个默认的imgUrl
var imgUrl = 'url地址';

Page({
  data:{
    imgUrl
  },

  onLoad:function(options){
    // 页面初始化 options为页面跳转所带来的参数
    switch(options.id){
    case "2": imgUrl = 'url地址';break;
    case "3": imgUrl = 'url地址';break;
    }
    //别忘了刷新一下imgUrl参数使之生效
    this.setData({    
      imgUrl    
    })   
  },
  onReady:function(){
    // 页面渲染完成
  },
  onShow:function(){
    // 页面显示
  },
  onHide:function(){
    // 页面隐藏
  },
  onUnload:function(){
    // 页面关闭
  }
})

效果

alt

alt

最后

因为是公司项目有一些代码不方便贴出来,贴出来的代码做学习之用。希望大家能通过我的博客学到些微信小程序的开发技巧。:)

这是我的博客 http://www.glacier.market