jQuery Mobile 1.1.0 RC1在iOS Safari中修改AJAXpost的HREF

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

Send Ajax Request 

和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; }); 

“jsonUrl”的值变为“#”(而不是我的ajax请求的url)然后数据变量的值返回整个页面而不是我想要的JSON提要。 奇怪的是,这只发生在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,所以也许我错过了一些可以解决这个问题的东西。 感谢帮助。

代替:

 $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/