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,所以也许我错过了一些可以解决这个问题的东西.感谢帮助.
代替:
$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/