Jquery mobile Jquery mobile,如何使用changePage更新changeHash和参数

Jquery mobile Jquery mobile,如何使用changePage更新changeHash和参数,jquery-mobile,Jquery Mobile,dataUrl包含带参数的完整url options.dataUrl = urlObj.href; $.mobile.changePage( $page, options ); 但是上面的代码只在新页面加载后使用哈希更新url。。。url将更改为 http://example.com/#sales?p=page 且不适用?p=第页 这是完整的函数,检查最后几行 http://example.com/#sales 函数getSPList(urlObj,选项){ var pageName=ur

dataUrl包含带参数的完整url

options.dataUrl = urlObj.href;
$.mobile.changePage( $page, options );
但是上面的代码只在新页面加载后使用哈希更新url。。。url将更改为

http://example.com/#sales?p=page
且不适用?p=第页

这是完整的函数,检查最后几行

http://example.com/#sales
函数getSPList(urlObj,选项){ var pageName=urlObj.hash.replace(/.*p=/,“”), pageSelector=urlObj.hash.replace(/\?*$/,“”); $.ajax({ url:“getSPList.php”, 数据类型:“json”, 数据:{p:pageName}, 成功:功能(结果){ 如果(结果){ 变量$page=$(页面选择器), $header=$page.children(“:jqmData(role=header)”), $content=$page.children(“:jqmData(role=content)”), markup=“
    ”; 对于(变量i=0;i”; } 标记+=“
”; $content.html(标记); $page.page(); $content.find(“:jqmData(role=listview)”).listview(); options.dataUrl=urlObj.href; options.changeHash=true; $.mobile.changePage($page,选项); } } }); 返回 }
我也遇到过同样的问题,以下是我从1.3.2版开始发现的问题:

$.mobile.changePage(toPage,options)
options.dataUrl
在存储和使用之前通过
path.convertUrlToDataUrl()
传递

内部
path.convertUrlToDataUrl()
删除“#”之前和之后以及包括“?”在内的所有内容

在将url传递到
$.mobile.changePage()之前,在
$.mobile.navigate()的下方,我看到以下内容:

function getSPList( urlObj, options ){
var pageName = urlObj.hash.replace( /.*p=/, "" ),
pageSelector = urlObj.hash.replace( /\?.*$/, "" );

$.ajax({
    url:"getSPList.php",
    dataType: 'json',
    data: {p: pageName},
    success:function(result){
        if ( result ) {
            var $page = $( pageSelector ),
                $header = $page.children( ":jqmData(role=header)" ),
                $content = $page.children( ":jqmData(role=content)" ),
                markup = "<ul data-role='listview' data-filter='true' data-filter-placeholder='Search Salesperson...'>";

            for ( var i = 0; i < result.sp.length; i++ ) {
                markup += "<li><a href='#addClient?p="+ result.sp[i].id +"' data-transition='slide'>" + result.sp[i].name + "</a></li>";
            }
            markup += "</ul>";

            $content.html( markup );
            $page.page();

            $content.find( ":jqmData(role=listview)" ).listview();

            options.dataUrl = urlObj.href;
            options.changeHash = true;

            $.mobile.changePage( $page, options );
        }           
    }
});

return
}

这解决了最初的问题,但我不确定是否有潜在的负面影响,或者是否有更好的解决方法。

您的意思是在页面之间传递参数?如果
dataUrl
包含
#sales?p=page
它将显示所有内容,而不仅仅是
#sales
。不,只需要在加载新页面后,地址栏显示带参数的完整url。它应该正常工作
$.mobile.changePage(page,{changeHash:true,dataUrl:urlObj.href})上面使用
选项的示例不起作用。嗨,Josh,谢谢你的评论。我与该项目完成,我会更新或标记你的答案,一旦我有机会工作的权利。非常感谢。
// rebuilding the hash here since we loose it earlier on
// TODO preserve the originally passed in path
if( !path.isPath( url ) && url.indexOf( "#" ) < 0 ) {
    url = "#" + url;
}
var query_index = (settings.dataUrl || '').indexOf('?');
if (query_index > -1) {
    url += settings.dataUrl.substring(query_index);
}