2012-03-26 4 views
5

Yasal Uyarı: JQuery Mobile 1.1.0 RC1 kullanıyorum, henüz kararlı bir sürüm değil. Bir AJAX isteği göndermesi ve bir JSON yanıtı döndürmesi gereken bir bağlantım var, ancak bağlantı tıklandığında jQuery Mobile, HREF'i iPhone'daki iOS Safari'de bir karma (#) olarak değiştiriyor gibi görünüyor. IPhone Kullanıcı Aracıları ile tarayıcılarda test yaparken bunu yapmaz.jQuery Mobile 1.1.0 RC1 iOS'ta AJAX Gönderileri için HREF Değiştirme Safari

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

ve "jsonUrl" değeri "#" (yerine benim ajax isteği url'nin) olur

$('#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; 
}); 

JS: İşte benim temel HTML ve JS Elimde ne göstermektir ve sonra veri değişkeninin değeri, istediğim JSON özet akışını değil, tüm sayfayı döndürür. Garip olan şey, bu sadece iPhone'da iOS Safari'de gerçekleşmesi. İyi çalışıyor ve JSQ beslemesi, jQuery Mobile sitesini OSX Safari veya Firefox'ta farklı bir kullanıcı aracısıyla denediğimde geri geliyor.

Bağlantıya rel = "external" ve data-type = "ajax" eklemeyi denedim ve düzeltmiyor. Ben de jQuery Mobile 1.1.0 RC1 kullanıyorum, ama sorun ya da jQuery Mobile doğru kullanmıyorsanız emin değilim. Ayrıca kodumda jQuery Mobile'a özgü başka bir JS'm yok, belki de bunu düzeltecek bir şey eksik. Yardımı takdir et.

+0

ben koymak OLABİLİR biliyorum Bir veri özniteliğindeki bağlantıya ilişkin URL'yi yazın ve jQuery ile bunu adlandırın, ancak daha iyi bir yolu olması gerekir. Her bağlantı için veri öznitelikleri koymak istemiyorum. – Keith

+0

Aynı zamanda $ (document) .bind ("mobileinit"), function() {$ .mobile.ajaxEnabled = false;}); ama hayır şans – Keith

+0

Sorununuzu tekrarlayamadım. http://jsfiddle.net/sDh4k/3/ – r0m4n

cevap

2

yerine:

$this.attr('href') 

Kullanımı bu: o zaman

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

jQuery Mobile 1.1.0RC1 ve üzerinde (1.1.0 yayınlandı dahil) # için herhangi bir bağlantı için href ayarlayacaktır Tıklatıldı ve href'i data-href özniteliğinde saklayın, işi tamamlanana kadar bekleyin ve sonra geri koyun. Sadece bunu iOS Mobile Safari'de yapıyor.

Ben ilgili github sorunları tartışmalara linkleri ve burada Raylar jQuery UJS üzerinde Ruby ile bu uygulamadan bazı bilgi ile, bu konuda biraz daha blogged ettik

:

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