微信小程序中,如果没有参数,如何设置默认参数?
现在学会小程序,这方面的知识,需要积累。
现在的情况是这样:
如果想从后端获取产品列表,而这些列表是可以根据分类来获取的,也是可以获取所有产品的。
那么,为了不使小程序报错,那么,我们就可以将不传的参数设默认值为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();
}
微信小程序中,如果没有参数,如何设置默认参数?的更多相关文章
- 微信小程序中如何使用setData修改数组或对象中的某一参数
本人也是刚开始接触微信小程序,在微信小程序中经常会遇到修改数组中某一项的值,比如array[0]或者是对象中object.item的值.这些值在微信小程序中都需要使用一个名为setData的方法,而这 ...
- 微信小程序中的组件使用1
不管是vue还是react中,都在强调组件思想,同样,在微信小程序中也是使用组件思想来实现页面复用的,下面就简单介绍一下微信小程序中的组件思想. 组件定义与使用 要使用组件,首先需要有组件页面和使用组 ...
- 微信小程序中如何使用WebSocket实现长连接(含完整源码)
本文由腾讯云技术团队原创,感谢作者的分享. 1.前言 微信小程序提供了一套在微信上运行小程序的解决方案,有比较完整的框架.组件以及 API,在这个平台上面的想象空间很大.腾讯云研究了一番之后,发现 ...
- 微信小程序中的app.js-清除缓存
微信小程序中的app.js 关于小程序app.js生命周期的介绍 App(Object) App() 函数用来注册一个小程序.接受一个 Object 参数,其指定小程序的生命周期回调等. App() ...
- 在微信小程序中使用LeanCloud(一)
之前学习了微信小程序前端,使用到LeanCloud线上数据库 [传送门].作为一个前端开发人员,了解后端及数据库是学习工作的需要. LeanCloud直接登录,未注册直接创建账户.它是一款免费的线上数 ...
- 微信小程序中事件
微信小程序中事件 一.常见的事件有 类型 触发条件 最低版本 touchstart 手指触摸动作开始 touchmove 手指触摸后移动 touchcancel 手指触摸动作被打断,如来电提醒,弹窗 ...
- ES6中Class的用法及在微信小程序中的应用实例
1.ES6的基本用法 ES6 提供了更接近传统语言的写法,引入了 Class(类)这个概念,作为对象的模板.通过class关键字,可以定义类.基本上,ES6 的class可以看作只是一个语法糖,它的绝 ...
- 去除富文本中的html标签及vue、react、微信小程序中的过滤器
在获取富文本后,又只要显示部分内容,需要去除富文本标签,然后再截取其中一部分内容:然后就是过滤器,在微信小程序中使用还是挺多次的,在vue及react中也遇到过 1.富文本去除html标签 去除htm ...
- 微信小程序中显示html富文本的方法
微信小程序中显示html富文本的方法 使用方法:git地址:https://github.com/icindy/wxParse 一.下载wxParse文件 二.在要引入的页面的js文件中,引入文件 j ...
- 微信小程序中promise的使用
简介 相信看到这篇文章的同学,都已经对微信小程序的api文档有所了解了,也都经历了微信小程序api回调函数嵌套的痛苦,才会想要通过Promise解决回调地狱这个问题,我下面就直接介绍怎么在小程序中使用 ...
随机推荐
- 硬盘分区及Linux文件系统
1. 硬盘物理结构 硬盘物理上主要分为: 盘片 磁道 扇区 机械臂 磁头 主轴 磁道: 当硬盘盘片旋转时,磁头若固定在一个位置上,则磁头会在盘片表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道.以盘片中心 ...
- Guide of Apache Directory Studio
Default User and Password admin secret
- 1.3.1 LVM条带化error
报错: #pvcreate /dev/dfb2 /dev/dfa2 /dev/dfc2 /dev/dfd2 already exists in filesystem Can't open /de ...
- CORS解决跨域问题(403问题)
1.什么是跨域问题? 跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是用当前页同域名同端口的路径,这能有效的阻止跨站攻击. 2.跨域问题出现的条件: 1.跨域问题是a ...
- Python中使用@的理解
Python函数中使用@ 稍提一下的基础 fun 和fun()的区别 以一段代码为例: def fun(): print('fun') return None a = fun() #fun函数并将返回 ...
- NOI2019:Stay at Home
7.16 NOI D1 从同步赛开始更起好了 先看了一圈题目,发现T1非常可做,二次函数因为对称轴在\(x < 0\)的地方所以有跟一次函数类似的单调性,搞个单调队列维护一下似乎就可以了.大力码 ...
- Maven聚合项目的创建
1.项目结构如下 步骤如下: 点击Finish 这里父项目需要加入如下的构建依赖: <dependencyManagement> <dependencies> <depe ...
- windows 系统防火墙 添加端口号方法
目前在大部分公司内使用的台式机和部分服务器都采用了Windows操作系统,而我么都知道相当一部分病毒.恶意程序.黑客都是利用扫描端口号,利用开放的端口进行入侵,此时大型企业都会将服务器的系统防火墙打开 ...
- 2019 朗玛信息java面试笔试题 (含面试题解析)
本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.朗玛信息等公司offer,岗位是Java后端开发,最终选择去了朗玛信息. 面试了很多家公司,感觉大部分公司考察的点 ...
- 2019 巨人网络java面试笔试题 (含面试题解析)
本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.巨人网络等公司offer,岗位是Java后端开发,最终选择去了巨人网络. 面试了很多家公司,感觉大部分公司考察的点 ...