Safari jQuery a Href onClick? - PullRequest
       19

Safari jQuery a Href onClick?

1 голос
/ 26 ноября 2010

Этот код работает в IE, FF и т. Д. Но не в Safari.Я не понимаю этого.

У меня есть ссылка на моем сайте:

<a href="/show/231" onClick="web('231')">Show</a>

Теперь файл .js:

function web(id) {
    $("#showIMG").load("/web", {
        id: id
    }, function() {});
}

"/ web"файл PHP (web.php).В web.php есть только php-код, который сохраняет значение в базе данных.

I Safari, редирект (/ show / 231) работает.Но это не сохранение значения в базе данных.«Загрузка» не работает.

Я проверил это здесь:

function web(id) {
    $("#showIMG").load("/web", {
        id: id
    }, function() {});
    alert('clicked');
}

Предупреждение работает.Но не загрузка?

Когда я меняю ссылку на эту

<a href="#" onClick="web('231')">Show</a>

, работает «загрузка», но не перенаправление на /show/231.

Ответы [ 3 ]

1 голос
/ 26 ноября 2010

Когда Safari начинает переход на следующую страницу, он останавливает ваш запрос AJAX.

Чтобы избежать этого, вам нужно предотвратить щелчок (добавив return false; к обработчику), а затем перейти явно, установив location.href в обработчике завершения AJAX.

0 голосов
/ 26 ноября 2010

Поскольку функция .load является асинхронной, запрос AJAX может не успеть исполниться до перехода браузера в "/show/231".

Учитывая ваш пример, я бы попробовал изменить .load на .ajax и использовать следующие параметры:

$.ajax({
    async: false, 
    url: '/web', 
    data: 'id=' + id, 
    success: function(){}
});

Параметр / значение async: false делает запрос AJAX синхронным, а не асинхронным ...., что должно решить вашу проблему.

0 голосов
/ 26 ноября 2010

Возможно, изменение страницы отменяет загрузку изображения, так как изображение не будет видно.

Вы можете сделать так, чтобы вызов веб-метода выполнял перенаправление с помощью location.href = "" insted.

...