微信小程序火车票查询 直取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,使得代码更加简洁.逻辑更加清晰(其 ...
随机推荐
- sed命令详解
搜索 纠正错误 添加实例 sed 功能强大的流式文本编辑器 补充说明 sed 是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时 ...
- 一段SQL
如何将会计分录流水合并成会计分录,环境oracle 11g,代码如下: 表: CREATE TABLE "DEMO_VCH" ("SET_NO" BYTE), ...
- JSP复习整理(二)基本语法
最基础的整理.. 一.语句声明 <%@ page language="java" contentType="text/html; charset=UTF-8&quo ...
- STM32F412应用开发笔记之五:结合W5500实现以太网通讯
因实际使用需求我们测试一下网络通讯,在NUCLEO-F412ZG测试板上没有以太网部分,我们选择外接一个W5500的实验板.W5500支持SPI接口通讯,DC3.3V供源.而NUCLEO-F412ZG ...
- android 蓝牙 http://blog.csdn.net/u012843100/article/details/52384219
http://blog.csdn.net/u012843100/article/details/52384219
- 【笔记】mysql两条数据的某个属性值互换
update groupuser as g1 join groupuser as g2 on (g1.user_id=1 and g2.user_id = 2) or(g1.user_id = 2 a ...
- while 与do ..while区别
package com.chongrui.test;/*while语句的一般形式如下:while(表达式)语句表达式为非0值,执行while中内嵌语句.它是先判断表达式,在根据表达式值,执行语句.do ...
- Java面试常见知识点总结(一)
1.sleep()和wait(): Java中的多线程是一种抢占式的机制,而不是分时机制.抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行. ● 共同点: (1) 他们都是在多 ...
- 解决文件上传插件Uploadify在火狐浏览器下,Session丢失的问题
因为在火狐浏览器下Flash发送的请求不会带有cookie,所以导致后台的session失效. 解决的方法就是手动传递SessionID到后台. $("#fileresultfiles&qu ...
- Duilib源码分析(五)UI布局—Layout与各子控件
接下来,继续分析duilib之UI布局Layout,目前提供的布局有:VerticalLayout.HorizontalLayout.TileLayout.TabLayout.ChildLayout分 ...