2010-11-26 2 views
1

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

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

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

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

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

"/ веб" является 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> 

с «нагрузкой» работает, но не перенаправлять к/шоу/231.

+0

Если кто-то дал правильный ответ, пожалуйста, выберите его, нажав на галочку под их подсчет голосов. Кроме того, вы можете подумать о регистрации. Я объединил ваши три счета вместе. – Will 2010-11-26 17:52:20

ответ

1

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

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

0

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

У вас может быть веб-метод вызова перенаправления с использованием location.href = "" insted.

0

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

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

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

В «асинхр ложь» параметр/значение делает запрос синхронным AJAX вместо асинхронного ... который должен решить вашу проблему.

Смежные вопросы