Всем привет, есть вообщем ссылка:
<a href="http://google.ru" onclick="return myFunc('123', 'abx')">Click</a>
Есть функция в javascript:
var myFunc = function() {
$.ajax({
type: "POST",
url: "",
data: {
id: id,
updated_at: updated_at
},
success: function (result) {
if(result == 'ok') {
return true;
} else {
alert('error');
return false;
}
}
});
}
Мне нужно отменить нажатие ссылки, если ajax вернул alert('error').
return false не помогает.
Что можно в этом случае сделать?
Так как решение принимается асинхронно, то придётся блокировать первый запрос и в случае успеха Ajax-запроса генерировать второй или переходить по URL-у с помощью JS.
Пример реализации с генерацией второго события и использованием флага:
var $link = $("a");
var clickIsConfirmed = false;
var result = 0; //для примера
$link.on("click", function() {
if (!clickIsConfirmed) {
$.ajax({
url: "",
error: function() { //для примера
result++; //для примера
if (result == 2) { //для примера
clickIsConfirmed = true;
$link[0].click();
}
}
});
return false;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="">Click</a>
Пример реализации с переходом с помощью JS:
var $link = $("a");
var result = 0; //для примера
$link.on("click", function() {
$.ajax({
type: "POST",
url: "",
error: function() { //для примера
result++; //для примера
if (result == 2) { //для примера
window.location.href = $link.attr("href");
}
}
});
return false;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="http://google.ru">Click</a>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей