【已验证-直接用】微信小程序wx.request请求服务器json数据并渲染到页面

news/2024/7/20 1:48:40 标签: 微信小程序, json, 小程序

小程序>微信小程序的数据总不能写死吧,肯定是要结合数据库来做数据更新,而小程序数据主要是json数据格式,所以我们可以利用php操作数据库,把数据以json格式数据输出即可。

现在给大家讲一下小程序>微信小程序的wx.request请求服务器获取数据的用法。

官方文档给出了示例代码,但是我这边自己进行了简单的处理:
 

data.json

[
    {
        "id":"100",
        "title":"中国载人航天工程三十年成就展",
        "pv":"490.1万"
    },
    {
        "id":"101",
        "title":"上海80后夫妻攒300万决定退休",
        "pv":"488.0万"
    },
    {
        "id":"102",
        "title":"医保改革引关注 官方回应民众顾虑",
        "pv":"446.9万"
    },
    {
        "id":"103",
        "title":"餐厅接网吧10个订单收到9个差评",
        "pv":"406.0万"
    },
    {
        "id":"104",
        "title":"三亚买3888元海鲜被提醒多花1700",
        "pv":"340.1万"
    },
    {
        "id":"105",
        "title":"警方回应女子高铁站殴打威胁女童",
        "pv":"264.7万"
    }
]

Json.wxml

<!--pages/Json/Json.wxml-->
<view class='container'>
 
 <view class="header">小程序渲染数据示例</view>

 <view class="card" wx:for="{{dataList}}" wx:key="dataList">
     <view class="title">{{index+1}} . {{item.title}}</view>
     <view class="pv">{{item.pv}}</view>
 </view>

</view>

<view class="author">BY TANKING</view>

Json.wxss

/* pages/Json/Json.wxss */
.container{
  width: 90%;
  margin:30px auto;
}

.container .header{
  text-align: center;
  font-size: 20px;
  margin-bottom: 25px;
}

.container .card{
  width: 100%;
  height: 45px;
  background: #eee;
  border-bottom: 1px solid #fff;
}

.container .card .title{
  width: 80%;
  float: left;
  height: 45px;
  line-height: 45px;
  font-size: 15px;
  color: #666;
  text-indent: 15px;
  white-space: nowrap; text-overflow: ellipsis; overflow: hidden; word-break: break-all; /*超出部分显示...*/
}

.container .card .pv{
  width: 20%;
  float: right;
  height: 45px;
  line-height: 45px;
  font-size: 15px;
  color: #666;
}

.author{
  text-align: center;
  font-size: 13px;
  color: #ccc;
}

Json.js

// pages/Json/Json.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    dataList:[]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

// 避免this指向问题
var that = this
 
// 发起请求
wx.request({
  url: 'http://127.0.0.1:8081/apiwx/jason/data.json', // 这里要替换你的域名的
  headers: {
    'Content-Type': 'application/json'
  },
  success: function (res) {
    //console.log("获取到的用户信息成功: " + res.data);
    // 将获取到的JSON数据存入list数组中
    that.setData({
      dataList: res.data,
    })

    // 在控制台打印
    console.log(res.data)
  }
})




  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})

注意,上面的   http://127.0.0.1:8081/apiwx/jason/data.json 就是数据源,替换为你服务器的API接口,我这里用test.json来做演示,返回是JSON格式的数据。

index.wxml

wx:for这个是小程序提供的一个指令,相当于遍历JSON数组的每一项。上面test.json有很多个JSON对象,遍历每一项就可以渲染出每一项的数据。

wx:key是给每一项添加一个标识,相当于每一项都拥有一个身份证的意思,也是唯一的,这样做有助于渲染效率。

item是相当于JSON数组的每一项,通过wx:for遍历出来的每一个JSON对象,然后读取每一个JSON对象的值。例如下面这个:

如果要单独读取里面的值,就是item.id,item.title,item.pv

{{index+1}} 指的是索引值+1,索引值是从0开始算的,即里面的每一项的值,一共有6项,从上到下的索引值是0、1、2、3、4、5,但是我为了每一项有个编号,那就在索引值的基础上+1,就可以实现每一项的编号。
 

如果我们没有wx:key那么在控制台会提示一些警告信息,但是这个警告信息并不影响页面的渲染,基本可以忽略掉!

警告信息:Now you can provide attr "wx:key" for a "wx:for" to improve performance

wx:key用来对列表渲染的数据指定一个"主键”,以加快列表渲染的速度。以下是官方文档原话:如不提供 wx:key,会报一个 warning, 如果明确知道该列表是静态,或者不必关注其顺序,可以选择忽略。如果你一定想去掉这个警告,可以在wx:for的组件属性里增加一个 wx:key="unique",unique请替换成数据绑定列表里的任意一个字段的字段名,比如文章列表数据中的字段“postId”,即wx:key="postId"。不建议使用wx:key="*this"
 

渲染结果如下


http://www.niftyadmin.cn/n/5171091.html

相关文章

图书销售数据大屏可视化【可视化项目案例-03】

🎉🎊🎉 你的技术旅程将在这里启航! 🚀🚀 本文选自专栏:可视化技术专栏100例 可视化技术专栏100例,包括但不限于大屏可视化、图表可视化等等。订阅专栏用户在文章底部可下载对应案例源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不…

【C++对象模型】构造函数II

构造函数语意学 》》构造函数语意学I—默认构造函数的构造操作《《 》》构造函数语意学II—拷贝构造函数的构造操作《《 》》构造函数语意学III—程序转化语意学《《 拷贝构造函数的构造操作 有三种情况&#xff0c;会以一个object的内容作为另一个class object的初值。 1.…

S7-1200PLC和SMART PLC开放式以太网通信(UDP双边通信)

S7-1200PLC的以太网通信UDP通信相关介绍还可以参考下面文章链接: 博途PLC开放式以太网通信TRCV_C指令应用编程(运动传感器UDP通信)-CSDN博客文章浏览阅读2.8k次。博途PLC开放式以太网通信TSENG_C指令应用,请参看下面的文章链接:博途PLC 1200/1500PLC开放式以太网通信TSEND_…

【lib.dll.a.so】Windows和Linux两个系统下的库文件

1.静态库&&动态库 Windows平台下&#xff1a;静态库后缀为.lib&#xff0c;动态库后缀为.dll Linux平台下&#xff1a;静态库格式为lib**.a&#xff0c;动态库格式为lib**.so 谈论两者区别之前&#xff0c;需要对程序编译和运行有一个大致认识&#xff1a; 代码想要…

Ubuntu18.04.6共享文件夹的创建,以及在哪打开共享文件夹

目录 1、打开虚拟机的设置页面 2、设置共享文件夹 3、确认是否成功设置共享文件夹 4、完成后在进入到/mnt/hgfs ls查看&#xff0c;发现共享文件夹已经出现可以使用 1、打开虚拟机的设置页面 两种方式&#xff1a; &#xff08;1&#xff09;直接点击“编辑虚拟机设置” …

Arduino到底适不适合做产品

文章目录 一、Arduino性能很低&#xff0c;不如树莓派等开发板&#xff0c;所以不要用Arduino做开发二、Arduino程序效率很低&#xff0c;所以不要用Arduino做开发三、Arduino只能开发玩具&#xff0c;不能做产品四、Arduino开发板成本太高&#xff0c;不适合做产品总结个人见解…

ubuntu20.04 MYNTEYE S 相机运行与标定记录

ubuntu20.04 MYNTEYE S 相机运行与标定记录 环境 ubuntu20.04 opencv3.3.1 硬件 mynteye S1030 OpenCV 3.4.3 安装 Jetson Nano小觅相机(MYNT EYE S)开发调试指南 mkdir -p ~/tools/opencv cd ~/tools/opencvgit clone https://github.com/opencv/opencv.git cd opencv/…

【手动创建UIWindow Objective-C语言】

一、上节课,我们讲了控制器View的懒加载: 1.什么时候会调用这个懒加载呢,用我们直接,控制器self.view self.view的时候: 什么时候,调用它这个self.view, 就要去加载控制器的view, self.view 加载控制器的view 我们给大家演示过了,这个大家已经清楚了,我们给大家说…