Oświadczenie: Używam jQuery Mobile 1.1.0 RC1, który nie jest jeszcze stabilny. Mam łącze, które musi opublikować żądanie AJAX i zwrócić odpowiedź JSON, ale po kliknięciu łącza wydaje się, że jQuery Mobile zmienia HREF na hasz (#) w Safari na iOS na iPhone. Nie robi tego podczas testowania w przeglądarkach z iPhone User Agents. Tu jest mój podstawowy HTML i JS, aby pokazać to, co mam:jQuery Mobile 1.1.0 RC1 Modyfikowanie HREF dla AJAX Posty w iOS Safari
<a href="/link/to/ajaxpost/">Send Ajax Request</a>
i 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;
});
Wartość "jsonUrl" staje się "#" (zamiast adresu URL do mojego żądania Ajax) a następnie wartość zmiennej danych zwraca całą stronę, a nie żądany plik JSON. Dziwne jest to, że dzieje się tak tylko w Safari na iPhone'ie. Działa dobrze, a kanał JSON wraca, gdy próbuję witryny jQuery Mobile z innym agentem użytkownika w OSX Safari lub Firefox.
Próbowałem dodać rel = "external" i data-type = "ajax" do linku i to nie naprawia. Używam również jQuery Mobile 1.1.0 RC1, ale nie jestem pewien, czy to jest problem, czy po prostu nie używam poprawnie jQuery Mobile. Nie mam również żadnego innego JS JQuery Mobile w moim kodzie, więc może brakuje mi czegoś, co to naprawi. Doceń pomoc.
Wiem, że mógłbym umieścić Adres URL łącza w atrybucie danych, a następnie wywołaj go za pomocą jQuery, ale musi być lepszy sposób na zrobienie tego. Nie chcę umieszczać atrybutów danych dla każdego linku. – Keith
Próbowano również $ (document) .bind ("mobileinit", function() {$ .mobile.ajaxEnabled = false;}); ale bez powodzenia – Keith
Nie mogłem odtworzyć twojego problemu. http://jsfiddle.net/sDh4k/3/ – r0m4n