jQuery Mobile 1.1.0 RC1在iOS Safari中修改AJAX帖子的HREF

时间:2012-03-26 23:10:41

标签: jquery iphone ios mobile jquery-mobile

免责声明:我使用的是jQuery Mobile 1.1.0 RC1,它还不是一个稳定的版本。我有一个链接需要发布一个AJAX请求并返回一个JSON响应但是当点击该链接时,似乎jQuery Mobile将HREF更改为iPhone上的iOS Safari中的哈希(#)。在使用iPhone用户代理的浏览器中进行测试时,它不会执行此操作。这是我的基本HTML和JS来展示我的内容:

<a href="/link/to/ajaxpost/">Send Ajax Request</a>

和JS

$('#tab a').on('click', function(e){
        var $this = $(this);
        var jsonUrl = $this.attr("href");
        alert(jsonUrl);

        $.mobile.showPageLoadingMsg();

        $.ajax({
            type: "POST",
            url: jsonUrl,
            success: function(data) {
                $.mobile.hidePageLoadingMsg();
                alert(data);
            }
        });
        return false; 
});

&#34; jsonUrl&#34;的值成为&#34;#&#34; (而不是我的ajax请求的url)然后data变量的值返回整个页面而不是我想要的JSON feed。奇怪的是,这只发生在iPhone上的iOS Safari中。它工作正常,当我在OSX Safari或Firefox中尝试使用不同用户代理的jQuery Mobile站点时,JSON提要会回来。

我尝试添加rel =&#34; external&#34;和data-type =&#34; ajax&#34;链接,它没有解决它。我也使用jQuery Mobile 1.1.0 RC1,但我不确定这是不是问题,或者我是不是正确使用jQuery Mobile。我的代码中也没有任何其他jQuery Mobile特定的JS,所以也许我错过了一些可以解决这个问题的东西。感谢帮助。

1 个答案:

答案 0 :(得分:2)

而不是:

$this.attr('href')

使用此:

$this.data('href') || $this.attr('href')

jQuery Mobile 1.1.0RC1和on(包括已发布的1.1.0)将href设置为点击时#的任何链接,并将href存储在data-href属性中,直到它为止完成它的事情,然后把它放回去。 仅在iOS Mobile Safari上执行此操作。

我已经在博客上发表了更多相关内容,链接到相关的github问题讨论以及有关在Ruby on Rails jQuery UJS上应用它的一些信息:

http://scottwb.com/blog/2012/06/29/jquery-mobile-breaks-your-hrefs-on-ios-mobile-safari/