使用jquery mobile在页面之间传递参数

使用jquery mobile在页面之间传递参数,jquery,jquery-mobile,local-storage,Jquery,Jquery Mobile,Local Storage,在jquery mobile中,在页面之间传递参数的正确方法是什么。在jquerymobile的问答中,有一些关于插件的建议。它是强制性的吗?请告诉我正确的方法。没有一个具体的答案。我必须为我的页面中的所有链接传递参数 页面转换之间的数据/参数操作 在页面转换期间,可以将参数从一个页面发送到另一个页面。这可以通过几种方式实现 参考: 解决方案1: 您可以使用changePage传递值: $.mobile.changePage('page2.html', { dataUrl : "page2.ht

在jquery mobile中,在页面之间传递参数的正确方法是什么。在jquerymobile的问答中,有一些关于插件的建议。它是强制性的吗?请告诉我正确的方法。没有一个具体的答案。我必须为我的页面中的所有链接传递参数

页面转换之间的数据/参数操作 在页面转换期间,可以将参数从一个页面发送到另一个页面。这可以通过几种方式实现

参考:

解决方案1:

您可以使用changePage传递值:

$.mobile.changePage('page2.html', { dataUrl : "page2.html?paremeter=123", data : { 'paremeter' : '123' }, reloadPage : true, changeHash : true });
这样读:

$(document).on('pagebeforeshow', "#index", function (event, data) {
    var parameters = $(this).data("url").split("?")[1];;
    parameter = parameters.replace("parameter=","");  
    alert(parameter);
});
$('#index').live('pagebeforeshow', function (e, data) {
    alert(data.prevPage.attr('id'));
});   
[举例][3]: index.html

<!DOCTYPE html>
  <html>
    <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="widdiv=device-widdiv, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <title>
    </title>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
    <script src="http://www.dragan-gaic.info/js/jquery-1.8.2.min.js">
    </script>
    <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>  
    <script>
        $(document).on('pagebeforeshow', "#index",function () {
            $(document).on('click', "#changePage",function () {     
                $.mobile.changePage('second.html', { dataUrl : "second.html?paremeter=123", data : { 'paremeter' : '123' }, reloadPage : false, changeHash : true });
            }); 
        }); 

        $(document).on('pagebeforeshow', "#second",function () {
            var parameters = $(this).data("url").split("?")[1];;
            parameter = parameters.replace("parameter=","");  
            alert(parameter);
        });         
    </script>
   </head>
   <body>
    <!-- Home -->
    <div data-role="page" id="index">
        <div data-role="header">
            <h3>
                First Page
            </h3>
        </div>
        <div data-role="content">
          <a data-role="button" id="changePage">Test</a>
        </div> <!--content-->
    </div><!--page-->

  </body>
</html>
<!DOCTYPE html>
  <html>
    <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="widdiv=device-widdiv, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <title>
    </title>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
    <script src="http://www.dragan-gaic.info/js/jquery-1.8.2.min.js">
    </script>
    <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>  
   </head>
   <body>
    <!-- Home -->
    <div data-role="page" id="second">
        <div data-role="header">
            <h3>
                Second Page
            </h3>
        </div>
        <div data-role="content">

        </div> <!--content-->
    </div><!--page-->

  </body>
</html>
例如:

解决方案3:

您还可以通过以下方式访问上一页中的数据:

$(document).on('pagebeforeshow', "#index", function (event, data) {
    var parameters = $(this).data("url").split("?")[1];;
    parameter = parameters.replace("parameter=","");  
    alert(parameter);
});
$('#index').live('pagebeforeshow', function (e, data) {
    alert(data.prevPage.attr('id'));
});   
prevPage对象保存完整的上一页

解决方案4:

作为最后一个解决方案,我们有一个漂亮的本地存储HTML实现。它只适用于HTML5浏览器(包括Android和iOS浏览器),但通过页面刷新,所有存储的数据都是持久的

if(typeof(Storage)!=="undefined") {
    localStorage.firstname="Dragan";
    localStorage.lastname="Gaic";            
}
例如:

更多信息
如果你想了解更多关于这个主题的信息,请看看这个。您可以通过示例找到几种解决方案。

您也可以将其用于链接中的外部关系(对于我和我的目的来说,这更容易),因此我想与大家分享以下内容:

HTML:

在我的例子中,结构='123'是动态创建的,没有人为动态目的写入固定值'123:-)


感谢以上帖子的URL拆分(请支持他的帖子),这只是一个补充/进一步的解释。

谢谢Gajotres。做同样的事情有很多方法。但是,这是标准的推荐方式。我的简单示例是,我有一个新闻文章列表。当点击某个新闻文章时,我想将相应的新闻文章id传递给服务器,以便服务器打开新闻详细信息页面。你能用一个例子来说明这一点吗。比如说,我有一个新闻列表——这里的新闻列表指的是项目列表。这是不同的。我的解决方案可以在没有服务器支持的情况下运行。解决方案1适用于您的情况,但这不是标准方法。正确的方法是使用ajax,连接到服务器,提取新页面数据并在另一个页面中显示。这里有一个工作示例:如果我向页面传递了一个参数,并使用dataurl属性进行检索,那么它就可以正常工作。但是,如果我刷新该页面,url参数将不可用。对此应该做些什么。Gajotres-你能澄清一下上面的问题吗。@user694688我创建了一个保留实际URL字符串中变量的文件,以便刷新并直接进入页面工作。在我的情况下,我需要加载id如下的链接
,它不适用于拆分。另请参见对类似问题的回答:
$( document ).on( "pageinit", "#page1", function( event ) {
  var parameters = $(this).data("url").split("?")[1];
  parameter = parameters.replace("structure=","");
  alert(parameter);
});