微信小程序中,如果没有参数,如何设置默认参数?

现在学会小程序,这方面的知识,需要积累。

现在的情况是这样:

如果想从后端获取产品列表,而这些列表是可以根据分类来获取的,也是可以获取所有产品的。

那么,为了不使小程序报错,那么,我们就可以将不传的参数设默认值为0,然后,传到后端。

var objectId = options.title||‘所有商品‘;

var cat_id = options.cat_id||0;
var ptype = options.ptype||0;
var brandId = options.brandId||0;

这种方式,就可以设置默认值。

在后端,根据参数是不是为0,来作条件过滤。

if(intval($id)){
             $where.=" AND cid=".intval($id);
         }这样的写法,如果$id为0,则会返回false,而不会执行里面的逻辑。

搞定

小程序前端wxml

    <navigator url="../listdetail/listdetail"  class="item">
    <image src="../../static/images/more.png" background-size="cover"></image>
      <text>更多</text>
     </navigator>

或是

<navigator url="../listdetail/listdetail?cat_id={{item.id}}&title={{item.name}}" class="item {{(index+1) % 3 == 0 ? ‘last‘ : ‘‘}}" wx:for="{{typeTree}}"  wx:key="" wx:for-item="item">
                <image class="icon" src="{{item.bz_1}}"></image>
                <text class="txt">{{item.name}}</text>
            </navigator>

小程序js

  onLoad: function (options) {
    console.log(options);
    console.log(options.title);
    var objectId = options.title||‘所有商品‘;
    //更改头部标题
    wx.setNavigationBarTitle({
      title: objectId,
      success: function () {
      },
    });

    //页面初始化 options为页面跳转所带来的参数
    var cat_id = options.cat_id||0;
    var ptype = options.ptype||0;
    var brandId = options.brandId||0;
    var that = this;
    that.setData({
      ptype: ptype,
      catId: cat_id,
      brandId: brandId
    })
    //ajax请求数据
    wx.request({
      url: app.d.ceshiUrl + ‘/Api/Product/lists‘,
      method: ‘post‘,
      data: {
        cat_id: cat_id,
        ptype: ptype,
        brand_id: brandId
      },
      header: {
        ‘content-type‘: ‘application/x-www-form-urlencoded‘
      },
      success: function (res) {
        var shoplist = res.data.pro;
        that.setData({
          shopList: shoplist
        })
      },
      error: function (e) {
        wx.showToast({
          title: ‘网络异常!‘,
          duration: 2000
        });
      }
    })

  },

php后端:

    /**
     * 获取商品列表接口
     */
       public function lists(){
         $json="";
         $id=intval($_POST[‘cat_id‘]);//获得分类id 这里的id是pro表里的cid
         $brand_id = intval($_POST[‘brand_id‘]);
         // $id=44;
         $type=I(‘post.type‘);//排序类型

         $page= intval($_POST[‘page‘]) ? intval($_POST[‘page‘]) : 0;
         $keyword=I(‘post.keyword‘);
         //排序
         $order="addtime desc";//默认按添加时间排序
         if($type==‘ids‘){
             $order="id desc";
         }elseif($type==‘sale‘){
             $order="shiyong desc";
         }elseif($type==‘price‘){
             $order="price_yh desc";
         }elseif($type==‘hot‘){
             $order="renqi desc";
         }
         //条件
         $where="1=1 AND pro_type=1 AND del=0 AND is_down=0";
         if(intval($id)){
             $where.=" AND cid=".intval($id);
         }
         if (intval($brand_id)) {
             $where.=" AND brand_id=".intval($brand_id);
         }
         if($keyword) {
            $where.=‘ AND name LIKE "%‘.$keyword.‘%"‘;
        }
        if (isset($_REQUEST[‘ptype‘]) && $_REQUEST[‘ptype‘]==‘new‘) {
            $where .=‘ AND is_show=1‘;
        }
        if (isset($_REQUEST[‘ptype‘]) && $_REQUEST[‘ptype‘]==‘hot‘) {
            $where .=‘ AND is_hot=1‘;
        }
        if (isset($_REQUEST[‘ptype‘]) && $_REQUEST[‘ptype‘]==‘zk‘) {
            $where .=‘ AND is_sale=1‘;
        }

         $product=M(‘product‘)->where($where)->order($order)->limit($page.‘,20‘)->select();
         //echo M(‘product‘)->_sql();exit;
         $json = array();$json_arr = array();
         foreach ($product as $k => $v) {
             $json[‘id‘]=$v[‘id‘];
             $json[‘name‘]=$v[‘name‘];
             $json[‘photo_x‘]=__DATAURL__.$v[‘photo_x‘];
             $json[‘price‘]=$v[‘price‘];
             $json[‘price_yh‘]=$v[‘price_yh‘];
             $json[‘shiyong‘]=$v[‘shiyong‘];
             $json[‘intro‘]=$v[‘intro‘];
             $json_arr[] = $json;
         }
         $cat_name=M(‘category‘)->where("id=".intval($id))->getField(‘name‘);
        $cat_pic=M(‘category‘)->where("id=".intval($id))->getField(‘bz_2‘);
         echo json_encode(array(‘status‘=>1,‘pro‘=>$json_arr,‘cat_name‘=>$cat_name,‘cat_pic‘=>$cat_pic));
         exit();
    }

原文地址:https://www.cnblogs.com/aguncn/p/11094094.html

时间: 2024-08-30 14:26:23

微信小程序中,如果没有参数,如何设置默认参数?的相关文章

在微信小程序中使用LeanCloud(一)

之前学习了微信小程序前端,使用到LeanCloud线上数据库 [传送门].作为一个前端开发人员,了解后端及数据库是学习工作的需要. LeanCloud直接登录,未注册直接创建账户.它是一款免费的线上数据库(开发版免费).适用于一些想自己写微信小程序前端但不太会后端的开发者学习用.本篇文章涉及数据存储服务(增删查改). 首先,下载一个JavaScript-sdk :av-weapp-min.js[下载链接],它是在微信小程序中使用此数据库的关键文件.下载之后,保存至项目路径,这里以'/libs/a

去除富文本中的html标签及vue、react、微信小程序中的过滤器

在获取富文本后,又只要显示部分内容,需要去除富文本标签,然后再截取其中一部分内容:然后就是过滤器,在微信小程序中使用还是挺多次的,在vue及react中也遇到过 1.富文本去除html标签 去除html标签及?空格 let richText = ' <p style="font-size: 25px;color: white">&nbsp; &nbsp; &nbsp; &nbsp;sdaflsjf的丰富及饿哦塞尔</p><s

vue、react、微信小程序中的过滤器

一.去除html标签及空格  1 let richText = ' <p style="font-size: 25px;color: white">&nbsp; &nbsp; &nbsp; &nbsp;sdaflsjf的丰富及饿哦塞尔</p><span>dsfjlie</span>'; 2 3 /* 去除富文本中的html标签 */ 4 /* *.+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们

微信小程序中target与currentTarget

如有错误,请纠出,大家一起进步!!! target在事件流的目标阶段:currentTarget在事件流的捕获,目标及冒泡阶段.但事件流处于目标阶段,target与currentTarget指向一样, 而当处于捕获和冒泡阶段的时候,target指向被单击的对象而currentTarget指向当前事件活动的对象.在微信小程序中也可总结为:target指向发生事件的组件,currentTarget指向绑定事件的组件. 下面请看例子: text.wxml: <view class="view1&

微信小程序中的 hover-class

微信小程序中,可以用 hover-class 属性来指定元素的点击态效果.但是在在使用中要注意,大部分组件是不支持该属性的. 目前支持 hover-class 属性的组件有三个:view.button.navigator. 不支持 hover-class 属性的组件,同时也不支持 hover-stop-propagation.hover-start-time.hover-stay-time 这三个属性. 使用方法: <view hover-class="bg_red">这是

微信小程序中的单位

vw:viewpoint width,视窗宽度,1vw等于视窗宽度的1%. vh:viewpoint height,视窗高度,1vh等于视窗高度的1%. rpx:rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应.规定屏幕宽为750rpx.如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素. 微信小程序也支持rem尺寸单位,rem和rpx的换算关系:rem: 规

微信小程序中获取高度及设备的方法

由于js中可以采用操纵dom的方法来获取页面元素的高度,可是在微信小程序中不能操纵dom,经过查找之后发现仅仅只有以下几个方法可以获取到高度 wx.getSystemInfoSync().windowWidth // 获取当前窗口的宽度 wx.getSystemInfoSync().windowHeight // 获取当前窗口的高度 wx.getSystemInfoSync().model // 获取当前采用的设备 wx.getSystemInfoSync().pixelRatio wx.get

微信小程序中的循环遍历问题

比如:如果在微信小程序中要遍历输出 0-9 的数,我们会使用for循环 for(var i=0;i<10;i++){ console.log(i); } 确实结果也是这样: 但是,如果我在循环时同时调用wx的api接口10次,那么输出的结果就会不同(这是产生了闭关的效应) eg:每次调用一次wx.showToast()接口,并在成功时输出循环的值. for(var i=0;i<10;i++){ wx.showToast({ title: 'haha', success:function(){

微信小程序中使用ECharts 异步加载数据 实现图表

<!--pages/bar/index.wxml--> <view class="container"> <ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas> </view> import * as echarts from '../../ec-canvas

在微信小程序中使用redux

本文主要讲述,在微信小程序中如何使用redux DEMO 需要解决的问题 如何在小程序中引入redux状态管理库,及它相关的插件? 微信小程序没有清晰的异步api,便于thunkMiddleware处理异步请求(异步操作),如何解决? 如何正确使用store的三大核心方法(getStore dispatch subscribe)? redux并不是react专属,所以他可以在任何地方使用,小程序也不例外.解决上面三个问题就可以了. 问题一: 如何在小程序中引入redux状态管理库,及它相关的插件