栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

jQuery Mobile:将数据从一页发送到另一页

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jQuery Mobile:将数据从一页发送到另一页

一个HTML /多页模板

这是在1个html多页模板中将属性从listview传递到第二页的示例:

http://jsfiddle.net/Gajotres/Gv7UW/-js对象作为存储容器

http://jsfiddle.net/Gajotres/J9NTr/-localStorage作为存储容器

基本上,您要做的是创建一个持久性javascript对象以用于存储。只要使用ajax进行页面加载(并且不会以任何方式重新加载页面),该对象就会保持活动状态。

    var storeObject = {        firstname : '',        lastname : ''    }

多个HTML页面模板

不幸的是,此示例无法通过jsFiddle完成,因此我将发布所需的文件:

HTML 1:

<!DOCTYPE html><html><head>    <title>jQM Complex Demo</title>    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0"/>    <link rel="stylesheet" href="http://pre.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />    <script src="http://pre.jquery.com/jquery-1.8.3.min.js"></script>        <script src="http://pre.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>      <script src="operations.js"></script>       </head><body>    <div data-role="page" id="index">        <div data-theme="a" data-role="header"> <h3>     First Page </h3> <a href="#second" >Next</a>        </div>        <div data-role="content"> <ul data-role="listview" data-theme="a" id="test-listview">     <li><a href="page2.html?id=1">link 1</a></li>     <li><a href="page2.html?id=2">link 2</a></li>     <li><a href="page2.html?id=3">link 3</a></li>     <li><a href="page2.html?id=4">link 4</a></li>     <li><a href="page2.html?id=5">link 5</a></li> </ul> </div>        <div data-theme="a" data-role="footer" data-position="fixed">        </div>    </div>    </body></html>

HTML 2:

<!DOCTYPE html><html><head>    <title>jQM Complex Demo</title>    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0"/>    <link rel="stylesheet" href="http://pre.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />        <script src="http://pre.jquery.com/jquery-1.8.3.min.js"></script>        <script src="http://pre.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>  </head><body>    <div data-role="page" id="second">        <div data-theme="a" data-role="header"> <h3>     Second Page </h3> <a href="#index" >Back</a>        </div>        <div data-role="content">        </div>        <div data-theme="a" data-role="footer" data-position="fixed">        </div>    </div>    </body></html>

Operations.js:

$(document).on('pageshow', '#second', function(){       alert(getParameterByName("id"));});function getParameterByName(name) {    return depreURI(        (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]    );}

用户认证演示

另一个无法用jsFiddle示例显示的示例,与前面的示例不同,该示例将附加SQL脚本。我建议您创建一个更好的数据库读取逻辑,这是一个简单的解决方案,易于进行SQL注入,但对于您的分配来说效果很好:

index.php:

<!DOCTYPE html><html><head>    <title>jQM Complex Demo</title>    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0"/>    <link rel="stylesheet" href="http://pre.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />    <style>        #login-button { margin-top: 30px;        } </style>    <script src="http://www.dragan-gaic.info/js/jquery-1.8.2.min.js"></script>        <script src="http://pre.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>    <script src="js/custom.js"></script></head><body>    <div data-role="page" id="login">        <div data-theme="a" data-role="header"> <h3>Login Page</h3>        </div>        <div data-role="content"> <label for="username">Enter your username:</label> <input type="text" value="" name="username" id="username"/> <label for="password">Enter your password:</label> <input type="password" value="" name="password" id="password"/>   <a data-role="button" id="login-button" data-theme="b">Login</a>        </div>        <div data-theme="a" data-role="footer" data-position="fixed">        </div>    </div>    <div data-role="page" id="index">        <div data-theme="a" data-role="header"> <h3></h3>        </div>        <div data-role="content"> Here goes content        </div>        <div data-theme="a" data-role="footer" data-position="fixed"> <h3>Page footer</h3>        </div>    </div>    </body></html>

json.php:

<?php    $var1 = $_REQUEST['action']; // We dont need action for this tutorial, but in a complex pre you need a way to determine ajax action nature    $jsonObject = json_depre($_REQUEST['outputJSON']); // Depre JSON object into readable PHP object    $username = $jsonObject->{'username'}; // Get username from object    $password = $jsonObject->{'password'}; // Get password from object    mysql_connect("localhost","root","");  // Conect to mysql, first parameter is location, second is mysql username and a third one is a mysql password    @mysql_select_db("test") or die( "Unable to select database"); // Connect to database called test    $query = "SELECT * FROM users WHERe user_name = '".$username."' and user_pass = '".$password."'";    $result=mysql_query($query);    $num = mysql_numrows($result);    if($num != 0) {        echo "true";    } else {        echo "false"; }?>

custom.js:

$(document).on('pagebeforeshow', '#login', function(){     $('#login-button').on('click', function(){        if($('#username').val().length > 0 && $('#password').val().length > 0){ userObject.username = $('#username').val(); // Put username into the object userObject.password = $('#password').val(); // Put password into the object // Convert an userObject to a JSON string representation var outputJSON = JSON.stringify(userObject); // Send data to server through ajax call // action is functionality we want to call and outputJSON is our data ajax.sendRequest({action : 'login', outputJSON : outputJSON});        } else { alert('Please fill all nececery fields');        }    });    });$(document).on('pagebeforeshow', '#index', function(){     if(userObject.username.length == 0){ // If username is not set (lets say after force page refresh) get us back to the login page        $.mobile.changePage( "#login", { transition: "slide"} ); // In case result is true change page to Index      }    $(this).find('[data-role="header"] h3').append('Wellcome ' + userObject.username); // Change header with wellcome msg    //$("#index").trigger('pagecreate');});// This will be an ajax function setvar ajax = {    sendRequest:function(save_data){        $.ajax({url: 'http://localhost/JSONP_Tutorial/json.php', data: save_data, async: true, beforeSend: function() {     // This callback function will trigger before data is sent     $.mobile.showPageLoadingMsg(true); // This will show ajax spinner }, complete: function() {     // This callback function will trigger on data sent/received complete     $.mobile.hidePageLoadingMsg(); // This will hide ajax spinner }, success: function (result) {     if(result == "true") {         $.mobile.changePage( "#index", { transition: "slide"} ); // In case result is true change page to Index     } else {         alert('Login unsuccessful, please try again!'); // In case result is false throw an error     }     // This callback function will trigger on successful action }, error: function (request,error) {     // This callback function will trigger on unsuccessful action          alert('Network error has occurred please try again!'); }        });    }}// We will use this object to store username and password before we serialize it and send to server. This part can be done in numerous ways but I like this approach because it is simplevar userObject = {    username : "",    password : ""}

本地主机.sql:

-- phpMyAdmin SQL Dump-- version 3.4.10.1-- http://www.phpmyadmin.net---- Host: localhost-- Generation Time: Feb 02, 2013 at 11:58 AM-- Server version: 5.5.20-- PHP Version: 5.3.10SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";SET time_zone = "+00:00";;;;;---- Database: `test`--CREATE DATAbase `test` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;USE `test`;-- ------------------------------------------------------------ Table structure for table `users`--CREATE TABLE IF NOT EXISTS `users` (  `user_id` int(11) NOT NULL AUTO_INCREMENT,  `user_name` varchar(64) NOT NULL,  `user_pass` varchar(64) NOT NULL,  PRIMARY KEY (`user_id`)) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;---- Dumping data for table `users`--INSERT INTO `users` (`user_id`, `user_name`, `user_pass`) VALUES(1, 'gajotres', 'testpass');;;;

更多信息

如果您想了解有关此主题的更多信息,请阅读本文。您将找到带有示例的几种解决方案。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435342.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号