1

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セクションのページに直接配置して表示すると、意図したとおりに分割リ​​スト形式で正しく表示されます。これはjquerymobileのバグですか、それとも間違ったことをしていますか?

編集:最小化されたバージョンのjqueryを使用しています。最小化されないように変更しましたが、これはエラーです。

TypeError: parentPage[0] is undefined (line 5189 of jquery-mobile.1.1.1.js)
[Break On This Error]   

parentId = parentUrl || parentPage[ 0 ][ $.expando ],

編集:ところで。これは、リストビューのエラーにすぎません。私は元々、すべてのブラウザで問題なく結果をテーブルとして返しました。

4

1 に答える 1

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、
トリス

于 2012-08-22T09:00:00.673 に答える