【问题标题】:JqueryMobile, AJAX and JSONJqueryMobile、AJAX 和 JSON
【发布时间】:2012-04-17 20:39:24
【问题描述】:

我正在尝试使用 ajax 调用从使用 JquerMobile 框架的服务器端获取一些值作为 JSON 对象。这在桌面 Chrome 浏览器中没有任何问题。这不适用于手机浏览器。指出我在这里做错的任何帮助都会有所帮助。脚本如下。

$("#showmore").live("click", function(event, param1){
    event.preventDefault();
    getUrl = $(this).attr('href');
    $.post(getUrl, function(data){  
        $('#sname').html(data.name);
    },"json");   
    return false;  
});

如果我在警告框中打印回调数据,我会得到当前页面的 HTML 内容!在桌面浏览器中,我得到了正确的值。感谢您的帮助!

【问题讨论】:

    标签: jquery jquery-mobile


    【解决方案1】:

    我也遇到过同样的问题。我只在 iPad 上遇到过这个问题,无法找到解决方法。不过我找到了解决方法。

    不要依赖href 属性,而是使用data-attribute,例如data-href。将data-href 属性设置为与href 属性相同,并在您的jQuery 代码中引用data-href 属性。

    似乎存在一个错误,在某些版本的 Mobile Safari 中您无法获得正确的 href 属性值。您使用 AJAX 请求加载同一页面的原因是因为通过 JS 返回给您的 href 值是空白的,指的是它的父文档。

    JS--

    $("#showmore").live("click", function(event, param1){
        var getUrl = $(this).attr('data-href');//no need to create a global variable, so use the `var` keyword here
        $.post(getUrl, function(data){  
            $('#sname').html(data.name);
        },"json");   
        return false;  
    });
    

    HTML --

    <a data-href="foobar.html" href="foobar.html" id="showmore">SHOW MORE!</a>
    

    请注意,jQuery 事件处理程序中的return false 在功能上与同时调用event.preventDefault()event.stopPropagation() 相同。

    【讨论】:

    • +碧玉。谢谢!这就是问题所在。似乎 attr('href') 返回了 #。打印或提醒我用于帖子的 href 并没有让我感到震惊!我使用了 data-href 并解决了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多