我是 jquery mobile 的新手,并且在获取我使用 pageinit 动态插入的内容以在表单响应页面的第一次显示时遇到问题。它会在页面的后续刷新时显示。我也不希望内容缓存。
我需要使用像 ?blah=1&blah=2 这样的查询字符串值,因为我在调用外部 json 文件时使用了这些值。
我应该怎么做?如果我使用 rel="external" 并将 ajax 设置为 false,我会遇到 android 上的问题。那么在页眉中使用 pageinit,如何使动态加载的内容(在示例中,以秒为单位的时间)在第 2 页显示第一次?
我已将问题简化为下面的测试页面。
预期的行为。当您单击表单的提交按钮时,您将进入第二页,该页面应显示从日期时间获取的秒数
实际行为。在页面刷新之前,秒/时间不会显示在第二页上。
在其他地方,我遇到了将 pageinit 代码放入 div 本身的建议,但是这导致内容缓存在 android 上(即秒数保持不变),所以我不想这样做。
任何关于我应该如何解决这个问题的想法将不胜感激
示例代码
=======
第 1 页 - 表格
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>
<script src="/scripts/myinit.js"></script>
</head>
<body>
<div data-role="page" id="page1" data-add-back-btn="true">
<div data-role="content" data-theme="b">
<form action="page_2.htm" method="GET" id="form1" name="form1">
<input type="hidden" name="seconds" value="">
<div class="ui-block-b"><button type="submit" data-theme="a">Submit</button></div>
</form>
</div>
</div>
</body>
</html>
===
第 2 页表单响应页面
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>
<script src="/scripts/myinit.js"></script>
</head>
<body>
<div data-role="page" id="page2" data-add-back-btn="true">
<div id="job" data-role="content">
</div>
</div>
</body>
</html>
===
名为 /scripts/myinit.js 的自定义 javascript 文件(包含在上面的两个页面中)
$('#page1').live('pageinit', function(event) {
var seconds = new Date().getTime();
$('input[name=seconds]').val(seconds);
});
$('#page2').live('pageinit', function(event) {
var querystring = location.search.replace( '?', '' ).split( '&' );
var queryObj = {};
for ( var i=0; i<querystring.length; i++ ) {
var name = querystring[i].split('=')[0];
var value = querystring[i].split('=')[1];
queryObj[name] = value;
}
var seconds = queryObj["seconds"];
$('#job').append("seconds=" + seconds);
});