Disclaimer: Sto usando jQuery Mobile 1.1.0 RC1 che non è ancora una versione stabile. Ho un link che deve pubblicare una richiesta AJAX e restituire una risposta JSON ma quando viene cliccato il link sembra che jQuery Mobile modifichi l'HREF in un hash (#) in iOS Safari su iPhone. Non lo fa durante i test nei browser con gli agenti utente iPhone. Ecco il mio HTML di base e JS per mostrare quello che ho:jQuery Mobile 1.1.0 RC1 Modifica HREF per messaggi AJAX in iOS Safari
<a href="/link/to/ajaxpost/">Send Ajax Request</a>
e il 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;
});
Il valore per "jsonUrl" diventa "#" (invece che l'url alla mia richiesta Ajax) e quindi il valore della variabile dati restituisce l'intera pagina e non il feed JSON che voglio. La cosa strana è che questo accade solo su iOS Safari su iPhone. Funziona perfettamente e il feed JSON torna quando provo il sito jQuery Mobile con un altro agente utente in OSX Safari o Firefox.
Ho provato ad aggiungere rel = "external" e data-type = "ajax" al collegamento e non lo aggiusta. Sto anche usando jQuery Mobile 1.1.0 RC1, ma non sono sicuro se questo è il problema o se sto semplicemente usando jQuery Mobile correttamente. Inoltre non ho altri JS specifici per jQuery Mobile nel mio codice, quindi forse mi manca qualcosa che risolverà questo problema. Apprezzo l'aiuto.
So che potrei mettere la URL per il collegamento in un attributo dati e quindi chiamarlo con jQuery, ma ci deve essere un modo migliore per farlo. Non voglio dover inserire gli attributi dei dati per ogni link. – Keith
Ha anche provato $ (document) .bind ("mobileinit", function() {$ .mobile.ajaxEnabled = false;}); ma senza fortuna – Keith
Non sono riuscito a replicare il tuo problema. http://jsfiddle.net/sDh4k/3/ – r0m4n