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

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

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

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

data.json

javascript 复制代码
[
    {
        "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

html 复制代码
<!--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

html 复制代码
/* 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

php 复制代码
// 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"。

渲染结果如下
相关推荐
前端小万21 小时前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
譕痕21 小时前
JSONObject与JSONArray封装数据格式区别
java·json
A黄俊辉A21 小时前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
MoonMoonLee1 天前
小程序配置
小程序
拖孩1 天前
代码我能全交给 AI,流量主这 500 个访客它一个都替不了我
前端·后端·微信小程序
2501_916007471 天前
苹果商店iOS应用上架费用全面解析:开发者计划与审核费用计算
android·ios·小程序·https·uni-app·iphone·webview
伞伞悦读1 天前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json
JQweryuiop1 天前
中小型游戏陪练工作室数字化管理实践:基于七彩屋电竞护航小程序订单、履约与绩效系统的落地复盘
大数据·游戏·小程序·架构
Mikko71 天前
jackson-databind 升到 2.21.6 就安全了吗?jackson-core 是另一个坐标,它那条 high 全局库至今没收
java·后端·安全·json
Ai-_Man1 天前
您您这可以把Mistral AI的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。
人工智能·ai·小程序·电脑