jquery mobile通过jsonp创建页面

时间:2011-04-21 16:19:29

标签: navigation jsonp jquery-mobile

所以我有jQueryMobile应用程序我正在努力,我想要做的是当用户点击链接时我希望它从mysites api获取JSONP数据然后成功通过jsonp调用创建内容当前moble app页面现在当初始页面加载时我可以调用jsonp并填充页面但是当我点击一个链接时我收到错误消息“错误加载页面”所以我如何将其设置为当用户点击它触发的链接时jsonp调用将创建由jquery mobile显示的内容吗?

修改

试图更好地解释

我有一个初始页面设置

HTML

<div data-role="page" class='maninpage' id="page1">
    <div data-role="header" data-scroll="x">
        <div>
            <a href="#"><img src="img/iphoneheader.gif" alt="Penn State Live"></a>
        </div>
        <div data-role="navbar">
            <ul>
                <li>
                    <a href="colleges">Colleges</a>
                </li>
                <li>
                    <a href="campuswires">Campuses</a>
                </li>
                <li>
                    <a href="facultystaff">Faculty and Staff</a>
                </li>
                <li>
                    <a href="ofinterest">Of Interest</a>
                </li>
                <li>
                    <a href="photos">Photos</a>
                </li>
                <li>
                    <a href="videos">Video</a>
                </li>
                <li>
                    <a href="subscriptions">Newswire Subscription</a>
                </li>
                <li>
                    <a href="psutxt">PSUTXT</a>
                </li>
            </ul>
        </div>
    </div>
    <div id="content" data-role="content"></div>
    <div data-role="footer"></div><!-- /footer -->
</div><!-- /page -->

然后在启动时我调用此函数给出启动参数

get_jsonp(data)

function get_jsonp(data){
$.ajax({
    dataType: 'jsonp',
    data:data,
    jsonpCallback:'create_content',
    async:false,
    url:'myapi'
 });
}

在我的create_content回调中,它创建了一个html列表,然后我用它来填充ul

像这样

$('#content').empty().append(content);
$("div#content ul").listview();

然后,当有人点击链接时,我希望它重复此过程,从链接中提取新参数,将它们发送到新的可跟踪页面,但使用ajax填充。

那就是说我需要让我的回调构建一个全新的页面,如果这就是我要做的事情,但是谁知道我可能做错了但是我认为会有一些方法可以在没有返回html的情况下向jquery mobile提供内容?

1 个答案:

答案 0 :(得分:0)

以下是您要查找的documentation,因为您要使用changePage()

示例:

$("[name=button_name]").click(function() { 
    $.mobile.changePage('anotherPage.php?parm=123','slide',false,true);
});

因此,如果用户单击按钮(button_name),它将调用'anotherPage.php?parm = 123'页面,(slide)是过渡类型,(false)是反向过渡类型,(true)是如果你想跟踪页面

更新(来自您的评论)

不确定,但您可以尝试这个

$.mobile.changePage({
    // this posts to the page anotherPage.php, 
    // you could capture these parms and do some action
    url: 'anotherPage.php?parm=123&another=foobar', 
    type: 'post', 
    // this posts the data from the form to the 
    // same page as above, this could do other actions
    data: $('form#your_form').serialize() 
},'slide',false,false);

我会对待

  • url:作为请求页面(显示内容)

  • 数据:作为您需要的提交数据。

希望这有帮助