我有一种情况,我从AJAX调用生成一个列表,然后切换到该页面。当我这样做时,我收到以下错误:
TypeError: d[0] is undefined
[Break On This Error]
...-corner-all");this._addThumbClasses(h);this._addThumbClasses(e.find(".ui-link-in...
这是执行ajax调用并加载DIV的代码:
function handleGetReports(data) {
$('#recentReportsText').html(data).trigger('create');
$.mobile.changePage("#recentReportsPage", { changeHash:true});
}
function recentReports() {
$.post("getrecentreports.php",'',handleGetReports);
}
这是ajax调用返回的数据:
<ul data-role="listview" data-split-icon="delete"><li data-role="list-divider">08/17 01:46pm<p class="ui-li-aside">Pending</p></li>
<li><a href="#">basic Company<br/>basic Username</a><a href="javascript:deleteReport('4');">Delete</a></li><li data-role="list-divider">08/16 06:50pm<p class="ui-li-aside">Complete</p></li>
<li><a href="javascript:popUp('reports/2012-08-16-3.pdf');">basic Info</a><a href="javascript:deleteReport('3');">Delete</a></li><li data-role="list-divider">08/16 06:44pm<p class="ui-li-aside">Complete</p></li>
<li><a href="javascript:popUp('reports/2012-08-16-2.pdf');">basic Number</a><a href="javascript:deleteReport('2');">Delete</a></li><li data-role="list-divider">07/16 06:38pm<p class="ui-li-aside">Pending</p></li>
<li><a href="#">basic Address</a><a href="javascript:deleteReport('1');">Delete</a></li></ul>
这是显示的页面:
<div data-role="page" id="recentReportsPage" data-title="Recent Reports" data-needs-auth="true">
<div data-role="header" data-theme="e">
<a href="#home" data-icon="home" data-iconpos="notext"></a>
<h1>Recent Reports</h1>
</div>
<div data-role="content">
<div id="recentReportsText"></div>
</div><!-- /content -->
</div><!-- /recent reports -->
如果我放弃.trigger('create')调用,则不会生成错误,但显示的数据是未增强的(即:没有列表视图)。如果我剪切并粘贴ajax返回的HTML并将其直接放在CONTENT部分的页面中进行显示,它将按照我的意图以拆分列表格式正确显示。这是一个jquery移动bug还是我做错了什么?
编辑:我正在使用jquery的最小化版本。我已将其更改为未最小化,这是错误:
TypeError: parentPage[0] is undefined (line 5189 of jquery-mobile.1.1.1.js)
[Break On This Error]
parentId = parentUrl || parentPage[ 0 ][ $.expando ],
编辑:BTW。这只是listview的一个错误。我最初将结果作为表返回,并没有在所有浏览器中出现。
答案 0 :(得分:0)
我修改了您发布的源代码并创建了一个工作示例。
index.html包含两个页面,第一页和报告页面。 test.html是包含报告数据的文件。
<强>的index.html 强>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<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 type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>
</head>
<body>
<script>
function handleGetReports(d) {
$('#recentReportsText').html(d).trigger('create');
}
$(function() {
$('#recentReportsPage').live("pagecreate", function() {
$.get('test.html', function(data) {
handleGetReports(data);
});
});
});
</script>
<div data-role="page" id="firstpage" class="type-home">
<div data-role="content">
<a href="#recentReportsPage">Click</a>
</div>
</div>
<div data-role="page" id="recentReportsPage" data-title="Recent Reports" data-needs-auth="true">
<div data-role="header" data-theme="e">
<a href="#firstpage" data-icon="home" data-iconpos="notext"></a>
<h1>Recent Reports</h1>
</div>
<div data-role="content">
<div id="recentReportsText"></div>
</div>
</div>
</body>
</html>
<强>的test.html 强>
<ul data-role="listview" data-split-icon="delete"><li data-role="list-divider">08/17 01:46pm<p class="ui-li-aside">Pending</p></li>
<li><a href="#">basic Company<br/>basic Username</a><a href="javascript:deleteReport('4');">Delete</a></li><li data-role="list-divider">08/16 06:50pm<p class="ui-li-aside">Complete</p></li>
<li><a href="javascript:popUp('reports/2012-08-16-3.pdf');">basic Info</a><a href="javascript:deleteReport('3');">Delete</a></li><li data-role="list-divider">08/16 06:44pm<p class="ui-li-aside">Complete</p></li>
<li><a href="javascript:popUp('reports/2012-08-16-2.pdf');">basic Number</a><a href="javascript:deleteReport('2');">Delete</a></li><li data-role="list-divider">07/16 06:38pm<p class="ui-li-aside">Pending</p></li>
<li><a href="#">basic Address</a><a href="javascript:deleteReport('1');">Delete</a></li></ul>
我希望这会有所帮助。
BR,
TOLIS