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

现在的情况是这样:

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

那么,为了不使小程序报错,那么,我们就可以将不传的参数设默认值为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();
    }

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

  1. 微信小程序中如何使用setData修改数组或对象中的某一参数

    本人也是刚开始接触微信小程序,在微信小程序中经常会遇到修改数组中某一项的值,比如array[0]或者是对象中object.item的值.这些值在微信小程序中都需要使用一个名为setData的方法,而这 ...

  2. 微信小程序中的组件使用1

    不管是vue还是react中,都在强调组件思想,同样,在微信小程序中也是使用组件思想来实现页面复用的,下面就简单介绍一下微信小程序中的组件思想. 组件定义与使用 要使用组件,首先需要有组件页面和使用组 ...

  3. 微信小程序中如何使用WebSocket实现长连接(含完整源码)

    本文由腾讯云技术团队原创,感谢作者的分享. 1.前言   微信小程序提供了一套在微信上运行小程序的解决方案,有比较完整的框架.组件以及 API,在这个平台上面的想象空间很大.腾讯云研究了一番之后,发现 ...

  4. 微信小程序中的app.js-清除缓存

    微信小程序中的app.js 关于小程序app.js生命周期的介绍 App(Object) App() 函数用来注册一个小程序.接受一个 Object 参数,其指定小程序的生命周期回调等. App() ...

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

    之前学习了微信小程序前端,使用到LeanCloud线上数据库 [传送门].作为一个前端开发人员,了解后端及数据库是学习工作的需要. LeanCloud直接登录,未注册直接创建账户.它是一款免费的线上数 ...

  6. 微信小程序中事件

    微信小程序中事件 一.常见的事件有 类型 触发条件 最低版本 touchstart 手指触摸动作开始 touchmove 手指触摸后移动 touchcancel 手指触摸动作被打断,如来电提醒,弹窗 ...

  7. ES6中Class的用法及在微信小程序中的应用实例

    1.ES6的基本用法 ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板.通过class关键字,可以定义类.基本上,ES6 的class可以看作只是一个语法糖,它的绝 ...

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

    在获取富文本后,又只要显示部分内容,需要去除富文本标签,然后再截取其中一部分内容:然后就是过滤器,在微信小程序中使用还是挺多次的,在vue及react中也遇到过 1.富文本去除html标签 去除htm ...

  9. 微信小程序中显示html富文本的方法

    微信小程序中显示html富文本的方法 使用方法:git地址:https://github.com/icindy/wxParse 一.下载wxParse文件 二.在要引入的页面的js文件中,引入文件 j ...

  10. 微信小程序中promise的使用

    简介 相信看到这篇文章的同学,都已经对微信小程序的api文档有所了解了,也都经历了微信小程序api回调函数嵌套的痛苦,才会想要通过Promise解决回调地狱这个问题,我下面就直接介绍怎么在小程序中使用 ...

随机推荐

  1. Python3使用random生成随机数

    本文介绍使用Python3中的random库生成随机数.随机小数.随机序列.随机字符串以及扑克洗牌等方法. 一.生成随机浮点数或小数 1.#生成0-1之间的浮点数 import random rnd ...

  2. .NetCore中EFCore的使用整理(三)-关联表操作

    一.查询关联表数据 StudyAboard_TestContext _context = new StudyAboard_TestContext(); CrmRole role = _context. ...

  3. myeclipse的ctrl+f搜索面板功能详解

    1.查找/替换方向:Direction Forward:向前 Backward:向后 2.范围:Scope All:全部(当前文件) Selected lines:选中的几行 3.选项:Options ...

  4. ActiveMQ 安装方法

    1. 打开浏览器,访问网址 http://activemq.apache.org/components/classic/download/ ,下载最新的版本,当前最新版本为5.15.9,根据Activ ...

  5. Codeforces Round #249 (Div. 2) C. Cardiogram

    C. Cardiogram time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  6. 通过fsockopen()方法从中国福彩网获取双色球历史中奖数据

    # 以下代码基于 CI 框架 # public function history_draw($page = 0) { set_time_limit(0); $page++; $up2now = dat ...

  7. python 通过Sybase ASE ODBC Driver访问sybase数据库,无需配置DSN【自己整理的】

    Python语言对于开发工程师或者测试工程师来说,应该是最高效的开发语言之一.但python访问sybase数据库的资料相对少见.而且sybase字符集为GB1803时,python访问sybase库 ...

  8. OracleVM桥接网卡无法获取本地连接网卡

    问题现象 VM虚拟机采用桥接网卡时,界面名称为"未指定",无法获取本地连接对应网卡信息: 处理方式: 进入本地连接,选择本地连接右键进入属性设置窗口; 选择安装,单击服务选项后点击 ...

  9. 【题解】Luogu P5337 [TJOI2019]甲苯先生的字符串

    原题传送门 我们设计一个\(26*26\)的矩阵\(A\)表示\(a~z\)和\(a~z\)是否能够相邻,这个矩阵珂以由\(s1\)得出.答案显然是矩阵\(A^{len_{s2}-1}\)的所有元素之 ...

  10. 2、Shell命令学习笔记

    1.Shell命令行解释器 1.1 Shell命令解释器 Shell是一个特殊的应用程序,介于操作系统内核和用户之间,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行. 因 ...