ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### wx.request(OBJECT) OBJECT参数说明: ![](https://box.kancloud.cn/e54561740d6f242dcdf96da92a3815af_961x525.png) success返回参数说明: ![](https://box.kancloud.cn/246f757a4dad31ac07ba7f068de9c5b7_964x222.png) data 数据说明: 最终发送给服务器的数据是 String 类型,如果传入的 data 不是 String 类型,会被转换成 String 。转换规则如下: 对于 header['content-type'] 为 application/json 的数据,会对数据进行 JSON 序列化 对于 header['content-type'] 为 application/x-www-form-urlencoded 的数据,会将数据转换成 query string (encodeURIComponent(k)=encodeURIComponent(v)&encodeURIComponent(k)=encodeURIComponent(v)...) 示例代码: //获取应用实例 var app = getApp() Page({ data: { indicatorDots:true, autoplay:true, interval:5000, duration:1000, banner: [] }, onLoad: function () { var that = this //调用应用实例的方法获取全局数据 reda(this,'banner'); } }) function reda(_self,type){ wx.request({ url: 'http://127.0.0.1/demo/demo.php?type='+type, //仅为示例,并非真实的接口地址 header: { 'content-type': 'application/json' }, success: function(res) { console.log(res.data); _self.setData({ "banner":res.data.results, }); } }) } 返回值: ## 接口规则: 使用PHP来传送数据,转换为json数据: <?php if(!isset($_GET['id']) || empty($_GET['id'])) { echo jsonFormat(array('error_code'=>300,'info'=>'请求失败')); } if($_GET['id']=='1') { $detail = array( 'id'=>'1', 'title'=>"详情1", 'img'=>"http://*******.jpg", 'content'=>"框架的视图层" ); } $detail = array('error_code'=>200,'results'=>$detail); echo json_encode($detail); ?> 基础库 1.4.0 开始支持,低版本需做兼容处理 返回一个 requestTask 对象,通过 requestTask,可中断请求任务。 requestTask 对象的方法列表: ![](https://box.kancloud.cn/1f7b79bc251f76fd0cb975d92ce01a99_960x102.png) 示例代码: const requestTask = wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'content-type': 'application/json' }, success: function(res) { console.log(res.data) } }) requestTask.abort() // 取消请求任务 Bug & Tip tip: content-type 默认为 'application/json'; tip: url 中不能有端口; bug: 开发者工具 0.10.102800 版本,header 的 content-type 设置异常; 使用setData需注意 ![](https://box.kancloud.cn/4b08c382c10b01f184be65c6dd621e7a_903x663.png) 商品分类功能 示例: 有数据: ![](https://box.kancloud.cn/f098de781f2675d552f3e0502d7c3f99_381x668.png) 无数据: ![](https://box.kancloud.cn/57abc32ff1e9d171afaeb058907dcc9d_379x667.png) logs.js Page({ data: { navLeftItems: [], navRightItems: [], curNav: 1, curIndex: 0 }, onLoad: function () { // 加载的使用进行网络访问,把需要的数据设置到data数据对象 var that = this wx.request({ url: 'http://huanqiuxiaozhen.com/wemall/goodstype/typebrandList', method: 'GET', data: {}, header: { 'content-type': 'application/json' }, success: function (res) { console.log(res) that.setData({ navLeftItems: res.data, navRightItems: res.data }) } }) }, //事件处理函数 switchRightTab: function (e) { console.log(e); // 获取item项的id,和数组的下标值 let id = e.target.dataset.id, index = parseInt(e.target.dataset.index); // 把点击到的某一项,设为当前index this.setData({ curNav: id, curIndex: index }) } }) ## 模版调用: logs.wxml <!--主盒子--> <view class="container"> <!--左侧栏--> <view class="nav_left"> <block wx:for="{{navLeftItems}}"> <!--当前项的id等于item项的id,那个就是当前状态--> <!--用data-index记录这个数据在数组的下标位置,使用data-id设置每个item的id值,供打开2级页面使用--> <view class="nav_left_items {{curNav == item.id ? 'active' : ''}}" bindtap="switchRightTab" data-index="{{index}}" data-id="{{item.id}}">{{item.tree.desc}}</view> </block> </view> <!--右侧栏--> <view class="nav_right"> <!--如果有数据,才遍历项--> <view wx:if="{{navRightItems[curIndex].tree.nodes[1].tree.nodes}}"> <block wx:for="{{navRightItems[curIndex].tree.nodes[1].tree.nodes}}"> <view class="nav_right_items"> <navigator url="../list/index?brand={{item.tree.id}}&typeid={{navRightItems[curIndex].id}}"> <!--用view包裹图片组合,如果有图片就用,无图片提供就使用50x30的这个默认图片--> <view> <block wx:if="{{item.tree.logo}}"> <image src="{{item.tree.logo}}"></image> </block> <block wx:else> <image src="http://temp.im/50x30"></image> </block> </view> <!--如果有文字,就用文字;无文字就用其他--> <view wx:if="{{item.tree.desc}}"> <text>{{item.tree.desc}}</text> </view> <view wx:else> <text>{{item.tree.desc2}}</text> </view> </navigator> </view> </block> </view> <!--如果无数据,则显示数据--> <view style='text-align:center' wx:else>暂无数据。。。</view> </view> </view> logs.wxss page{ background: #f5f5f5; } /*总体主盒子*/ .container { position: relative; width: 100%; height: 100%; background-color: #fff; color: #939393; } /*左侧栏主盒子*/ .nav_left{ /*设置行内块级元素(没使用定位)*/ display: inline-block; width: 25%; height: 100%; /*主盒子设置背景色为灰色*/ background: #f5f5f5; text-align: center; } /*左侧栏list的item*/ .nav_left .nav_left_items{ /*每个高30px*/ height: 30px; /*垂直居中*/ line-height: 30px; /*再设上下padding增加高度,总高42px*/ padding: 6px 0; /*只设下边线*/ border-bottom: 1px solid #dedede; /*文字14px*/ font-size: 14px; } /*左侧栏list的item被选中时*/ .nav_left .nav_left_items.active{ /*背景色变成白色*/ background: #fff; } /*右侧栏主盒子*/ .nav_right{ /*右侧盒子使用了绝对定位*/ position: absolute; top: 0; right: 0; flex: 1; /*宽度75%,高度占满,并使用百分比布局*/ width: 75%; height: 100%; padding: 10px; box-sizing: border-box; background: #fff; } /*右侧栏list的item*/ .nav_right .nav_right_items{ /*浮动向左*/ float: left; /*每个item设置宽度是33.33%*/ width: 33.33%; height: 80px; text-align: center; } .nav_right .nav_right_items image{ /*被图片设置宽高*/ width: 50px; height: 30px; } .nav_right .nav_right_items text{ /*给text设成块级元素*/ display: block; margin-top: 5px; font-size: 10px; /*设置文字溢出部分为...*/ overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }