登录  /  注册
博主信息
博文 42
粉丝 2
评论 0
访问量 52659
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
网络请求API及抖音小程序接口获取、页面实现(网络请求AIP 获取接口 接口数据与前端页面对接)2019年3月28日
小明的博客
原创
5995人浏览过

今天主要学习了网络请求API,同时,开始抖音小程序项目,获取接口数据,然后将数据渲染在前台页面。

网络请求API

. 网络请求API wx.request 必要参数:url
. 如果post传值接收不到,必须把header里的content-type,改变为application/x-www-form-urlencoded
. 这里我们需要把网络请求方法作为共用代码放进js文件里,然后定义util对象给他post方法,传入参数that func 分别把引用页面的this 和 该页面处理数据的方法传入,然后通过网络请求api理的方法,成功时用相应的方法处理数据
. 最后把整个页面导出 用方法module.exports = util;

  1. //公公代码
  2. //可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块
  3. var util = {};
  4. // 它有两个接收值,that,它就是个接收值的名字。它的值,是根据传入的值
  5. // fun 它就是个接收值的名字。它的值,是根据传入的值, 传入b,它的值就是b
  6. util.post = function(that,fun){
  7. // 如果post传值接收不到,必须把header里的content-type,改变为application/x-www-form-urlencoded
  8. // json数据,必须一次返回。也不能有其他的打印数据或输出数据。
  9. // var that = this;
  10. wx.request({
  11. url: 'http://www.ouyangke.com/douyin.php',
  12. data: {
  13. a: 'index'
  14. },
  15. method: 'POST',
  16. dataType: 'json',
  17. header: {
  18. // 'content-type': 'application/json',
  19. 'content-type': 'application/x-www-form-urlencoded'
  20. },
  21. success(e) {
  22. // 把page里的this,重新赋值,就不会给api里的this冲突了。
  23. // this.setData不能在api里使用。
  24. // 如果js文件里的data数据改变了,wxml里的数据会跟着改变。
  25. // 返回return是没用的
  26. // that 是什么?是接收值,它接收的是什么呢? 是传入方(2.js)的整个文件的(page)传过来了。 相当于 this
  27. // fun是什么? 是接收值,它接收的是方法名(b),就相当于this.b可以调用(2.js)里的b方法
  28. // this.b 相当于 调用(2.js)里的b方法
  29. // that[fun] 相当于 调用(2.js)里的b方法 that是this,[fun]相当于 .b
  30. // ()括号是传值,我们把接口得到的数据,给(2.js)里的b方法
  31. that[fun](e.data.data);
  32. }
  33. })
  34. }
  35. module.exports = util;

// pages/1/2.js
//引入外部就是文件
var ut = require(‘../../utils/util.js’);
Page({

  1. /**
  2. * 页面的初始数据
  3. */
  4. data: {
  5. dou: []
  6. },
  7. /**
  8. * 生命周期函数--监听页面加载
  9. */
  10. onLoad: function (options) {
  11. ut.post(this, 'b');
  12. },
  13. b: function(e){
  14. this.setData({
  15. dou: e
  16. })
  17. console.log(e);
  18. }

})

事件绑定

  1. <!--pages/1/3.wxml-->
  2. <!-- bindtap是将点击事件绑定在组件上 点击触发后面的方法 -->
  3. <!-- data-后面可以跟自定义属性 然后可以将属性值传给后台 -->
  4. <text bindtap="a" data-oo="jiji" style="color:red;">{{ name }}</text>
  5. <input bindinput="b" style="margin:35px; border:1px solid blue"></input>
  1. // pages/1/3.js
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. name: 'php 中文网'
  8. },
  9. /**
  10. * 生命周期函数--监听页面加载
  11. */
  12. onLoad: function (options) {
  13. },
  14. a: function(e) {
  15. // e下面的target下面的dataset下面的id是前台页面的自定义属性值
  16. // console.log(e.target.dataset.oo);
  17. console.log(e);
  18. },
  19. b:function(e) {
  20. this.setData({
  21. name:e.detail.value
  22. })
  23. // e下面detail下面的value是输入框的值
  24. // console.log(e.detail.value);
  25. }
  26. })

抖音小程序获取接口数据

现在来做抖音小程序,首先通过接口获取数据,然后根据获取的数据在前端页面渲染出来。
首先引入公共js文件,然后用post方法连接端口

  1. var com = require('../../utils/util.js');
  2. //监听页面加载完后
  3. onLoad: function () {
  4. com.post('douyin.php', {uid : uid}, 'getData', this);
  5. this.setData({
  6. windowHeight: wx.getSystemInfoSync().windowHeight //获取屏幕可使用高度
  7. })
  8. },
  9. getData: function(e) {
  10. // console.log(e.data);
  11. e.data[0].autoplay = true;
  12. this.setData({
  13. play: e.data
  14. })

post方法需要传入 获取接口的链接 然后传入的数据 获取接口数据后处理数据的回调函数 还有调用这个方法的页面
最后获取的数据赋给play
前端页面调用play里面相应的属性值,然后在前端渲染出来。

  1. <!--index.wxml-->
  2. <!-- 顶部固定数据 -->
  3. <!-- 搜索图标 -->
  4. <view style="position:fixed;left:30rpx;top:30rpx;z-index:9999;">
  5. <image class="top_img" src="../../img/search.png"></image>
  6. </view>
  7. <!-- 推荐和定位 -->
  8. <view style="text-align:center;width:100%;position:fixed;top:30rpx;z-index:9999;color:#fff;">
  9. <text space="emsp" decode="true" style="font-size:30rpx;">推荐&nbsp;&nbsp;</text>
  10. <text space="emsp" decode="true" style="font-size:18rpx;">&nbsp;&nbsp;|&nbsp;&nbsp;</text>
  11. <text space="emsp" decode="true" style="font-size:24rpx;">&nbsp;&nbsp;合肥</text>
  12. </view>
  13. <!-- 二维码图标 -->
  14. <view style="position:fixed;right:100rpx;top:30rpx;z-index:9999;">
  15. <image class="top_img" src="../../img/scan.png"></image>
  16. </view>
  17. <!-- live图标 -->
  18. <view style="position:fixed;right:30rpx;top:30rpx;z-index:9999;">
  19. <image class="top_img" src="../../img/live.png"></image>
  20. </view>
  21. <!-- 滑块视图容器 vertical纵向 indicator-dots不显示面板 autoplay不自动切换 -->
  22. <!-- height 滑块试图高度,根据手机屏幕高度,动态设置 -->
  23. <swiper vertical="true" indicator-dots="" autoplay="" style="height:{{windowHeight}}px;" bindchange="edit_v">
  24. <!-- swiper-item 每个单元滑动容器 -->
  25. <!-- wx:for循环js里的数据 wx:key先阶段用不到,防止有黄色错误,不给值 item-id="{{item.id}}" -->
  26. <swiper-item wx:for="{{play}}" wx:key="id" wx:for-index="key">
  27. <view style="text-align:center;width:100rpx;position:fixed;right:10rpx;bottom:{{windowHeight/3}}rpx;z-index:9999;">
  28. <!-- 头像,关注按钮 -->
  29. <view>
  30. <image class="avatar" src="{{item.user.avatar}}"></image>
  31. <image style="width:30rpx;height:30rpx;" src="../../img/follow.png"></image>
  32. </view>
  33. <!-- 点赞按钮 -->
  34. <image wx:if="{{item.is_zan == 0}}" class="right_img" src="../../img/love.png" bindtap="zan" data-id="{{item.id}}" data-key="{{key}}"></image>
  35. <!-- 点赞成功按钮 -->
  36. <image wx:if="{{item.is_zan == 1}}" class="right_img" src="../../img/love_on.png"></image>
  37. <view class="text">{{item.zan_number}}</view>
  38. <!-- 消息按钮 -->
  39. <image class="right_img" src="../../img/com.png" bindtap="b" data-id="{{item.id}}" data-key="{{key}}"></image>
  40. <view class="text">{{item.msg_number}}</view>
  41. <!-- 转发按钮 -->
  42. <image class="right_img" src="../../img/forwa.png"></image>
  43. <view class="text">{{item.forward}}</view>
  44. </view>
  45. <!-- 视频 -->
  46. <video id="video_{{key}}" autoplay="{{item.autoplay}}" initial-time="{{item.initial}}" controls="" class="wh100" src="{{item.video}}" bindtap="z" bindended="g"></video>
  47. <!-- 标题、内容、歌曲 -->
  48. <view style='position:fixed;left:30rpx;bottom:10rpx;z-index:9999;color:#fff;font-size:28rpx;width:80%;'>
  49. <view style="margin-bottom:10rpx;">@<span style="font-size:34rpx;">{{item.user.nickname}}</span></view>
  50. <view style="margin-bottom:10rpx;">{{item.conten}}</view>
  51. <view class='box'>
  52. <view class='flex-box' style='left: {{posLeft2}}px;'>
  53. <view id='txt3' class='txt'>{{item.audio.title}}</view>
  54. <view class='txt' style='margin-left: {{marginLeft}}px'>{{item.song}}</view>
  55. </view>
  56. </view>
  57. </view>
  58. <!-- 歌曲文字,前面的抖音logo -->
  59. <image style='width:20rpx;height:20rpx;position:fixed;left:30rpx;bottom:40rpx;z-index:99999;' src="../../img/dou.png"></image>
  60. <!-- 旋转图片 -->
  61. <image style='border-radius:50%;width:100rpx;height:100rpx;position:fixed;right:30rpx;bottom:40rpx;z-index:99999;' src='{{item.audio.url}}' class='img' animation="{{animationData}}"></image>
  62. </swiper-item>
  63. </swiper>
  64. <!-- 弹框 评论 -->
  65. <view style="position:fixed;bottom:0rpx;" wx:if="{{is_p == 1}}">
  66. <input style="width:720rpx;background-color:#fff;padding:20rpx;" placeholder="有爱评论,说点儿好听的~" focus="true" bindinput="i"></input>
  67. <view>
  68. <button type="default" style='width:50%;float:left;' bindtap="c">取消</button>
  69. <button type="primary" style='width:50%' bindtap="d">确定</button>
  70. </view>
  71. </view>
批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学