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

Kei*_*ith 5 iphone mobile jquery ios 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>
Run Code Online (Sandbox Code Playgroud)

和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; 
});
Run Code Online (Sandbox Code Playgroud)

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

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

sco*_*twb 2

代替:

$this.attr('href')
Run Code Online (Sandbox Code Playgroud)

用这个:

$this.data('href') || $this.attr('href')
Run Code Online (Sandbox Code Playgroud)

#jQuery Mobile 1.1.0RC1 及更高版本(包括发布的 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/