微信小程序火车票查询 直取12306数据
最终效果图:
样式丑哭了,我毕竟不是前端,宗旨就是练练手,体验微信小程序的开发,以最直接的方式获取12306数据查询火车票。
目录结构:
search1是出发站列表,search2是目的站列表,命名没有太好好想。
车站信息
12306查询页面,打开浏览器开发者工具分析请求,发现各个车站的信息都在这个JS文件中:
当然车站的信息会发生变动,所以最好的方式就是抓取数据,我现在为了方便,直接把数据拷贝过来,就是一大堆字符串:
通过正则截取出目前项目需要的两个东西,如:北京北 VAP
在search1.js和search2.js中各自放了这个字符串,本想按照data:{}的方式放在app.js中,可是取不到,这个该如何实现?
请求信息
12306查询页面,点击查询按钮的时候,它会发送两个请求:
第一个是日志请求,这里不需要,它有什么作用12306知道
第二个才是我们需要的,拷贝它的请求地址,构建我们程序的请求
url中最后的queryC,之前是query的,可能过段时间变为queryD、query0...
又一个变化的地方,也可以说处处皆会变化,毕竟12306不是自己做的,无法掌控,
所以最好还是抓取数据的方式来做,我现在方便直接写死了。
leftTicketDTO.train_date 日期,格式:2016-10-13
leftTicketDTO.from_station 出发站编码,上面那堆车站信息中的,北京北为VAP
leftTicketDTO.to_station 目的站编码,同上
purpose_codes 普通(ADULT)或学生(0X00)
响应信息
参数错误或没给全返回的JSON:{"status":false,"c_url":"leftTicket/queryC","c_name":"CLeftTicketUrl"}
一般正常的格式为:
要是提交的是昨天的日期,则messages中会有消息,但status和httpstatus仍然为true和200。
于是乎对返回结果有了如下判断:
展示信息
先看看data中的有什么东东:
用到的参数,能够确认其作用的:
车次 station_train_code
始发站 start_station_name
终点站 end_station_name
出发站 from_station_name
目的站 to_station_name
出发时间 start_time
目的时间 arrive_time
历时时间 lishi
商务座 swz_num
一等座 zy_num
二等座 ze_num
软卧 rw_num
硬卧 yw_num
软座 rz_num
硬座 yz_num
无座 wz_num
特等座 tz_num
gr_num和qt_num,猜测为高级软卧和其他,gg_num和yb_num就实在想不到了。
需要注意的是,座位的票数超过某个数的返回值是“有”,而低于则返回的是数字,所以在显示数据列表之前还得处理下。
在写程序的时候我发现我有挺多想法想写出来的,可到真正要写博客的时候却想不出要写什么了,悲哀!日后想到在补充吧。
附上源码:http://pan.baidu.com/s/1hrKWRac 欢迎拍砖!~
微信小程序火车票查询 直取12306数据的更多相关文章
- 微信小程序--火车票查询
微信小程序--火车票查询 写在最前面 微信小程序自九月份推出内测资格以来,经历了舆论热潮到现在看似冷清,但并不意味着大家不那么关注或者不关注了.我想不管是否有内测资格,只要是感兴趣的开发者已经进入潜心 ...
- 微信小程序结合后台数据管理实现商品数据的动态展示、维护
微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,本篇随笔介绍微信小程序结合后台数据管理实现商品数据的动态展示.维护,介绍如何实现商品数据在后台管理系统中的维护管理,并通 ...
- 微信小程序通过api接口将json数据展现到小程序示例
这篇文章主要介绍了微信小程序通过api接口将json数据展现到小程序示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧实现知乎客户端的一个重要知识前提就是,要知道怎么通过 ...
- 微信小程序wx.request请求服务器json数据并渲染到页面
[原文出自]: https://blog.csdn.net/weixin_39927850/article/details/79766259 微信小程序的数据总不能写死吧,肯定是要结合数据库来做数据更 ...
- ESP32 BLE蓝牙 微信小程序通信发送大于20字符数据
由于微信小程序只支持BLE每次发送数据不大于20个字节,ESP32则有经典蓝牙.低功耗蓝牙两种模式. 要解决发送数据大于20个字节的问题,最简单实用的方式就是分包发送.如下图所示: 1.什么起始字符和 ...
- 微信小程序初探(二、分页数据请求)
大家好 波哥小猿又来啦[斜眼笑],昨天咱们讲了微信小程序简单数据请求,有没有照着教程实现请求的同学们啦 实现的同学举个爪[笑脸].哈哈,好了不扯犊子啦,我相信有的同学已经实现了简单的数据请求,没有实现 ...
- (二)校园信息通微信小程序从后台获取首页的数据笔记
在从后台获取数据之前,需要先搭建好本地服务器的环境. 确保Apache,MySql处于开启状态.下图为Apache,MySql处于开启时状态 然后进入后台管理平台进行字段和列表的定义 然后在后台添加数 ...
- 微信小程序开发--模板(template)使用,数据加载,点击交互
微信小程序视图层提供了 模板(template),可以在模板中定义代码片段,然后在不同的地方调用.结果在数据渲染那懵逼了.按照官网上对模板的说明和对数据的加载. 1.定义模板 使用name属性,作为模 ...
- 微信小程序实现watch属性监听数据变化
Vue 提供了一种通用的方式来观察和响应 Vue 实例上的数据变动:监听属性 watch. 虽然watch的滥用会导致性能不佳,但在一些情况下我们还是需要watch,使得代码更加简洁.逻辑更加清晰(其 ...
随机推荐
- iOS9新特性 window决定程序的状态栏管理问题
Xcode7升级之后遇到的问题 问题一: 老项目在Xcode6上运行没有任何问题,但在Xcode7上运行直接崩了! 经过一波分析: 发现是因为我顶部状态栏处添加了topWindow,用于处理Tab ...
- ComboBox,三级联动菜单,新入门点小白,有些代码有待优化,大神勿喷
//当前窗体的Load事件 private void provinceANDCity_Load(object sender, EventArgs e) { //连接字符串 string strConn ...
- Kali 使用ssh,安装vmware tools 和字体重叠
Kali一直是我所爱,说说遇到的问题吧 第一个:字体重叠 gnome-tweak-tool --打开工具 第二个:ssh 修改sshd_config文件,命令为: vi /etc/ssh/sshd_c ...
- js_原型
原型是JavaScript中一个比较难理解的概念,原型相关的属性也比较多,对象有"prototype"属性,函数对象有"prototype"属性,原型对象有&q ...
- 关于.NET知识体系结构图总结
转载:关于.NET知识体系结构图总结-零度http://www.xcode.me/book/net-framework-maps 最近对.NET框架方面的知识进行了概要的总结,整理了一些知识体系结构图 ...
- 裸奔单片机GUI
#include "main.h"#ifndef __STD_GUI_CONTEX__#define __STD_GUI_CONTEX__ #define CPSTRSIZE 20 ...
- JSFiddle
<script async src="//jsfiddle.net/980355088/k0u1qjm6/embed/"></script>
- css3 动画的有关属性
transform transform: none|transform-functions; transform 属性向元素应用 2D 或 3D 转换.该属性允许我们对元素进行旋转.缩放.移动或倾斜. ...
- A Game(洛谷 2734)
题目背景 有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的任意一端取一个数,取数后该数字被去掉并累加到本玩家的得分中 ...
- Docker上ubuntu新建用户的网络访问不通问题
背景 作为一个生命不息,折腾不止的码农.各种操作系统被我不知道搞崩了多少次,无数个夜晚连夜抢修数据,重装系统,那个累啊!! Option 1:备份.数据可以备份,配置可以备份,安装包可以备份.但是安装 ...