当前位置: 首页 > news >正文

WebApp之JQuery Mobile实现火车列表信息查询

一、项目源代码如下:

<!-- --><!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>列车时刻表查询</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="css/jquery.mobile-1.4.3.css"/>
</head>

<body>
<!-- 第一个页面  开始-->
<div data-role="page" id="index">

    <div data-role="header" data-position="fixed" >
        <h1>列车时刻表查询</h1>
    </div>

    <div role="main" class="ui-content">
        <div class="ui-field-contain">
            <label>发车站:</label>
            <input type="text" name="text-basic" id="search-begin" value="">
        </div>
        <div class="ui-field-contain">
            <label>终点站:</label>
            <input type="text" name="text-basic" id="search-end" value="">
        </div>
        <div class="ui-field-contain">
            <label>车次:</label>
            <input type="text" name="text-basic" id="search-no" value="">
        </div>
        <input type="button" value="搜索" id="search-submit">
        <ul data-role="listview" data-inset="true" id="list">
        </ul>
    </div>

    <div data-role="footer"  data-position="fixed">
        <div data-role="navbar">
            <ul>
                <li><a href="#" data-icon="grid" class="ui-btn-active">查询</a></li>
                <li><a href="#" data-icon="star">收藏</a></li>
                <li><a href="#" data-icon="gear">设置</a></li>
            </ul>
        </div>
    </div>
</div>
<!-- 第一个页面 结束-->

<!-- 第二个页面  开始-->
<div data-role="page" id="detail">

    <div data-role="header" data-position="fixed">
        <h1>列车时刻表查询</h1>
    </div>

    <div role="main" class="ui-content">
        <h2></h2>
        <table data-role="table" id="movie-table" data-mode="reflow" class="ui-responsive">
            <thead>
            <tr>
                <th data-priority="1">站名</th>
                <th data-priority="persist">到站时间</th>
                <th data-priority="persist">出发时间</th>
            </tr>
            </thead>
            <tbody>
            </tbody>
        </table>
        <a href="#" class="ui-btn ui-corner-all" data-rel="back">返回</a>
    </div>

    <div data-role="footer">
        <div data-role="navbar">
            <ul>
                <li><a href="#" data-icon="grid" class="ui-btn-active">查询</a></li>
                <li><a href="#" data-icon="star">收藏</a></li>
                <li><a href="#" data-icon="gear">设置</a></li>
            </ul>
        </div>
    </div>
</div>
<!-- 第一个页面 结束-->

<script src="js/jquery-1.11.1.js"></script>
<script src="js/jquery.mobile-1.4.3.js"></script>
<script>
    var urlPre = "http://www.corsproxy.com/"; //Ajax的跨域中转
    var url1 = "www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getStationAndTimeByStationName?UserID=";
    var url2 = "www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getStationAndTimeDataSetByLikeTrainCode?UserID=";
    var url3 = "www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?UserID=";
    var isbind = 0;

    //获取车次列表
    var getTrainList = function () {

        //数据校验
        if ($("#search-no").val() || ($("#search-begin").val() && $("#search-end").val())) {

            var searchButton = $(this); //获得搜索按钮
            searchButton.button("option", "disabled", true); //将搜索按钮点击之后设置为不可用,防止多次点击

            $.mobile.loading("show"); //设置加载框,一个加载旋转按钮

            var _data = {}; //网络请求的参数
            var _url = url1; //网络请求的url
            if (!$("#search-no").val()) { //如果车次没有填 则下两项应该填了 
            //StartStation、ArriveStation、TrainCode是接口要求的参数
                _data.StartStation = $("#search-begin").val();
                _data.ArriveStation = $("#search-end").val();
            } else {
                _data.TrainCode = $("#search-no").val();
                _url = url2;
            }

            //发起get请求urlPre + _url
            $.get("http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getStationAndTimeByStationName?UserID=", _data,
                    function (data) { //回调方法
                    //alert("############################################!");
                        $("#list").html("");
                        var list = $("#list");
                        var timeTables = $(data).find("TimeTable"); //找到xml数据中的项

                        var _arr = []; //存放所有的车次

                        timeTables.each(function (index, obj) {
                            var i = index;
                            if (i > 10) return false; //只载入前10条

                            var that = $(this);
                            if (that.find("FirstStation").text() == "数据没有被发现") {
                                alert("数据没有被发现!");
                                return false;
                            }

                            _arr.push('<li><a href="#" data-no="' + that.find("TrainCode").text() + '">' +
                                    '<h2>' + that.find("TrainCode").text() + '次</h2>' +
                                    '<p>' + that.find("FirstStation").text() + ' - ' + that.find("LastStation").text() + '</p>' +
                                    '<p>用时:' + that.find("UseDate").text() + '</p>' +
                                    '<p class="ui-li-aside">' + that.find("StartTime").text() + ' 开</p>' +
                                    '</a></li>');

                        });

                        if (_arr.length > 0) {
                            list.html(_arr.join(""));
                            list.listview("refresh");//刷新列表
                        }

                        $.mobile.loading("hide"); //隐藏加载按钮

                        searchButton.button("option", "disabled", false); //设置按钮可以点击了
                    });                 


        } else {
            alert("请输入发车站和终点站或输入车次!");
        }


    };


    var isAjax=false//是否正在加载数据

    //获取详情
    var getInfoByTrainCode = function () {

        $.mobile.loading("show");


        var trainCode = $(this).attr("data-no");

        if(isAjax) return;
        isAjax=true

        $.post(urlPre + url3,
                {
                    TrainCode: trainCode
                },
                function (data) {
                    isAjax=false
                    $("#detail").find(".ui-content h2").html(trainCode + "次");
                    var tbody = $("#detail").find(".ui-content tbody");
                    tbody.html("");

                    $(data).find("TrainDetailInfo").each(function (index, obj) {
                        var tr = $("<tr></tr>");
                        var that = $(this);
                        tr.html('<td>' + that.find("TrainStation").text() + '</td>' +
                                '<td>' + that.find("ArriveTime").text() + '</td>' +
                                '<td>' + that.find("StartTime").text() + '</td>');
                        tbody.append(tr);
                    });

                    $.mobile.loading("hide");

                    $.mobile.changePage("#detail");
                });

    };

    //绑定事件:搜索按钮的绑定事件
    var bindEvent = function () {
        $("#search-submit").on("click", getTrainList);
        $("#list").on("click", "a", getInfoByTrainCode);  //为动态生成的list设置事件
    };

    $(document).on("pageshow", "#index", function () {
        if (isbind) return
        isbind = 1;
        bindEvent();
    });

</script>
</body>
</html>

其中包含JQuery Mobile的支持js和css

二、项目演示效果如下:
这里写图片描述

三、项目源代码下载:

这里写链接内容

相关文章:

  • 用Unity写一个12306验证器的恶搞图生成软件
  • 高仿微信5.2.1主界面及消息提醒功能
  • 自定义DialogAlert对话框并实现对话框的复用
  • webservice作用(优,缺点;作用)
  • 如何修改Eclipse的背景颜色
  • 编程的智慧
  • 如何修改eclipse快捷键的组合方式
  • 在Application_Error获取Asp.Net未处理异常信息
  • Bmob的使用案例
  • easyui
  • Eclipse导入library的时候报:Found 2 versions of android-support-v4.jar in the dependency list
  • tomcat为什么无法关闭
  • Android项目编译的时候出现:Caused by: java.lang.ClassNotFoundException: com.example.aaa.MainActivity
  • dsadsa
  • 在一个千万级的数据库查寻中,如何提高查询效率?
  • [译]前端离线指南(上)
  • Akka系列(七):Actor持久化之Akka persistence
  • canvas 高仿 Apple Watch 表盘
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Java 最常见的 200+ 面试题:面试必备
  • JAVA之继承和多态
  • Making An Indicator With Pure CSS
  • Mysql数据库的条件查询语句
  • php ci框架整合银盛支付
  • Python利用正则抓取网页内容保存到本地
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Vue.js 移动端适配之 vw 解决方案
  • vue-router的history模式发布配置
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 使用docker-compose进行多节点部署
  • 数据科学 第 3 章 11 字符串处理
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 我感觉这是史上最牛的防sql注入方法类
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • (13)Hive调优——动态分区导致的小文件问题
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (3)(3.5) 遥测无线电区域条例
  • (6)添加vue-cookie
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (十三)Maven插件解析运行机制
  • (一)appium-desktop定位元素原理
  • (一)Java算法:二分查找
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .NET Core中Emit的使用
  • .net FrameWork简介,数组,枚举
  • .Net 路由处理厉害了
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .Net转前端开发-启航篇,如何定制博客园主题
  • ::before和::after 常见的用法
  • @angular/cli项目构建--http(2)
  • @Autowired @Resource @Qualifier的区别