微信小程序开发实验2

一、实验目标

1、掌握服务器域名配置和临时服务器部署;2、掌握 wx.request 接口的用法。

二、实验步骤

列出实验的关键步骤、代码解析、截图。

1.准备工作

1.1 API密匙申请

注册和风天气的账号,在个人的控制台->应用管理界面申请个人认证的key

1.2 API的调用方法

本次实验目的是实现一个可以实时查看城市天气的小程序。可以使用https://free-api.heweather.com/s6/weather/now?[请求参数]查询城市天气。

也可以使用https://devapi.qweather.com/v7/weather/now?[请求参数]来查询城市的天气,但是注意这一个URL的参数中的location只接受城市的ID编号或城市的经纬度,不接受城市名的字符串。

如果需要查询城市的ID可以通过https://geoapi.qweather.com/v2/city/lookup?[请求参数]查询结果。

1.3 使用演示

首先演示通过城市ID查询城市天气的方法。

先通过https://geoapi.qweather.com查询北京的城市ID,查询结果为101010100。

然后通过城市ID查询这个城市的天气。

2.1 服务器的域名配置

每一个小程序在和指定域名进行网络通信时,都要将域名添加到管理员后台的名单中。

2.程序设计

2.1 项目创建

创建一个空白程序,在程序中创建一个images文件夹用来存放图片,程序的目录结构如下。

在和风天气官网下载相关图片,整理到images文件夹下。

2.2 视图设计

2.2.1 导航栏设计

在app.json中写入如下代码,设置导航栏为蓝色,标题文字为白色。

2.2.2 页面设计

计划设计如下图所示的页面。

由图可见,页面整体分为四部分预计使用如下的组件

页面整体view,且class="container"

第一部分picker且mode=’region‘

第二部分text,

第三部分image

第四部分整体view 且class=‘detail’,包含四个view组件 且class=‘bar’,这四个view组件中每个包含三个view组件且class=‘box'。

1)整体

页面的wxml设计如下

在wxss中加入下面的样式

2)第一部分

第一部分实现区域选择,能够让我们自由选择地区。在wxml的代码如下所示

3)第二部分

在第二部分中显示温度和天气状况,wxml代码如下。

加入如下的样式。

3)第三部分

第三部分实现添加一个天气的图标

加入如下的样式

4)第四部分

第四部分显示城市的各种天气信息,wxml如下。

在wxss中加入下面的样式。

2.3 逻辑实现

2.3.1 更换省市自治区信息

对第一部分的代码做如下的修改,表示当选项变化时函数regionchange触发,地区信息由变量region决定。

js文件中加入变量region和函数regionchange

2.3.2 获取天气数据

设置一个函数getweather(),设置一个变量now,当函数getweather触发时,当前城市的天气信息被存入now中。

 

在onload和regionchange中调用getweather函数。这样在页面初始化和城市切换时都能实时的显示当前城市的天气。

注意getweather()函数,因为这里获取实时天气的方法是先获取城市ID再通过城市ID获取城市的天气,所以这里连续发起了两次request请求。当然如果使用ttps://free-api.heweather.com/s6/weather/now?这个接口可以直接用城市名的字符串作为参数发起请求。

2.3.3更新天气数据

在js文件中加入now的初始化数据

对wxml文件做出如下的修改

三、程序运行结果

列出程序的最终运行结果及截图。

1.默认城市的天气

2.切换城市

3.切换城市的天气

四、问题总结与体会

描述实验过程中所遇到的问题,以及是如何解决的。有哪些收获和体会,对于课程的安排有哪些建议。

1.问题:https://free-api.heweather.com/s6/weather/now接口不好使,返回信息permission denied

解决:permission denied表示无访问权限,没有购买服务。具体啥原因造成这个报错,我也不知道。可以尝试先查询城市ID再通过ID查询城市天气的方法获取数据。

2.问题:获取城市ID和天气信息后,setdata函数没有成功更新数据?

解决:调用wx.request后在这个函数内部this和函数外部的this是不同的,我们需要将函数外部的this用一个变更记录。例如: var that=this;

.......

{

that.setData({.....});

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值