最终效果图:

样式丑哭了,我毕竟不是前端,宗旨就是练练手,体验微信小程序的开发,以最直接的方式获取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数据的更多相关文章

  1. 微信小程序--火车票查询

    微信小程序--火车票查询 写在最前面 微信小程序自九月份推出内测资格以来,经历了舆论热潮到现在看似冷清,但并不意味着大家不那么关注或者不关注了.我想不管是否有内测资格,只要是感兴趣的开发者已经进入潜心 ...

  2. 微信小程序结合后台数据管理实现商品数据的动态展示、维护

    微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,本篇随笔介绍微信小程序结合后台数据管理实现商品数据的动态展示.维护,介绍如何实现商品数据在后台管理系统中的维护管理,并通 ...

  3. 微信小程序通过api接口将json数据展现到小程序示例

    这篇文章主要介绍了微信小程序通过api接口将json数据展现到小程序示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧实现知乎客户端的一个重要知识前提就是,要知道怎么通过 ...

  4. 微信小程序wx.request请求服务器json数据并渲染到页面

    [原文出自]: https://blog.csdn.net/weixin_39927850/article/details/79766259 微信小程序的数据总不能写死吧,肯定是要结合数据库来做数据更 ...

  5. ESP32 BLE蓝牙 微信小程序通信发送大于20字符数据

    由于微信小程序只支持BLE每次发送数据不大于20个字节,ESP32则有经典蓝牙.低功耗蓝牙两种模式. 要解决发送数据大于20个字节的问题,最简单实用的方式就是分包发送.如下图所示: 1.什么起始字符和 ...

  6. 微信小程序初探(二、分页数据请求)

    大家好 波哥小猿又来啦[斜眼笑],昨天咱们讲了微信小程序简单数据请求,有没有照着教程实现请求的同学们啦 实现的同学举个爪[笑脸].哈哈,好了不扯犊子啦,我相信有的同学已经实现了简单的数据请求,没有实现 ...

  7. (二)校园信息通微信小程序从后台获取首页的数据笔记

    在从后台获取数据之前,需要先搭建好本地服务器的环境. 确保Apache,MySql处于开启状态.下图为Apache,MySql处于开启时状态 然后进入后台管理平台进行字段和列表的定义 然后在后台添加数 ...

  8. 微信小程序开发--模板(template)使用,数据加载,点击交互

    微信小程序视图层提供了 模板(template),可以在模板中定义代码片段,然后在不同的地方调用.结果在数据渲染那懵逼了.按照官网上对模板的说明和对数据的加载. 1.定义模板 使用name属性,作为模 ...

  9. 微信小程序实现watch属性监听数据变化

    Vue 提供了一种通用的方式来观察和响应 Vue 实例上的数据变动:监听属性 watch. 虽然watch的滥用会导致性能不佳,但在一些情况下我们还是需要watch,使得代码更加简洁.逻辑更加清晰(其 ...

随机推荐

  1. 求两圆相交部分面积(C++)

    已知两圆圆心坐标和半径,求相交部分面积: #include <iostream> using namespace std; #include<cmath> #include&l ...

  2. 获取Unity3D虚拟摄像机的图像

    最新博客地址已转到: http://blog.csdn.net/zzlyw?viewmode=contents   ------------------------------------------ ...

  3. epoll & socket 连接数突破

    http://shenfeng.me/how-far-epoll-can-push-concurrent-socket-connection.html

  4. sql server 2008 R2配置管理

    安装vs2013后,sql server 2008R2配置管理提示“远程过程调用失败” 这是因为vs2013自带的Microsoft SQL Server 2012Local DB与之冲突. 通过升级 ...

  5. Uiautomator--Uiselector元素定位

    一.UiSelector作用 按照一定的条件(例如控件的text值,资源id),定位界面上的元素.UiSelector对象的最终目的是去构造一个UiObject对象. 二.元素定位 1.根据text定 ...

  6. 用C3中的animation和transform写的一个模仿加载的时动画效果

    用用C3中的animation和transform写的一个模仿加载的时动画效果! 不多说直接上代码; html标签部分 <div class="wrap"> <h ...

  7. linux系统的初化始配置

    一.网络的初始化 1.ip地址的修改(临时生效) 使用ifconfig命令 ifconfig 网卡名 ip地址 子网掩码 [root@localhost /]# ifconfig eno1677773 ...

  8. ofbiz定时任务配置

    1.一个service的java类 2.在framework/service/servicedef/service.xml中配置上一步的service服务. <service name=&quo ...

  9. MYsql 数据库密码忘记(Window)

    之前想在自己的机器上搭建一个数据库,但是又怕占用内存太大,因此特地从网上下载了一个绿色版,免安装版本的,开始用着 还可以,后来重启机器发现悲催了,数据库用不了了, 决心好好整整Mysql 我的是 版本 ...

  10. 51node1264(判断线段相交)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1264 题意:中文题诶- 思路:对于直线a1a2, b1b2, ...