Как перенаправить страницу после нажатия на кнопку Ok на sweet alert?
Я могу отображать sweet alert После обновления страницы, но я должен нажать кнопку Ok, которую я получаю на sweet alert для перенаправления страницы.Пожалуйста, помоги мне в этом.
<?php
echo '<script type="text/javascript">';
echo 'setTimeout(function () { swal("WOW!","Message!","success");';
echo '}, 1000);'
echo 'window.location.href = "index.php";';
echo '</script>';
?>
9 ответов
, чтобы указать функцию обратного вызова, вы должны использовать объект в качестве первого аргумента, и функцию обратного вызова в качестве второго аргумента.
echo '<script>
setTimeout(function() {
swal({
title: "Wow!",
text: "Message!",
type: "success"
}, function() {
window.location = "redirectURL";
});
}, 1000);
</script>';
просто поставить .then(
перед функцией. Мы!--7-->не нужно использовать функции таймера.
Например:
swal({
title: "Wow!",
text: "Message!",
type: "success"
}).then(function() {
window.location = "redirectURL";
});
на .then
функция используется для ожидания, пока пользователь не прочитает информацию модального окна и решить, какое решение сделать, нажав на одну кнопку. Например, Yes
или No
.
после щелчка Swich Alert может перенаправить пользователя на другой экран, вызвать другое модальное окно Sweet Alert с новыми и последующими вопрос, перейдите по внешней ссылке и т. д.
опять мы не должны использовать таймер потому что гораздо лучше контролировать действия пользователя. Пользователь может ждать вечности или принять меры, как щелчок пальца Таноса.
С использованием .then
, код становится короче, чистым и элегантным. ;)
setTimeout(function () {
swal({
title: "Wow!",
text: "Message!",
type: "success",
confirmButtonText: "OK"
},
function(isConfirm){
if (isConfirm) {
window.location.href = "//stackoverflow.com";
}
}); }, 1000);
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert-dev.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.css">
или вы можете использовать встроенные функции timer
, то есть:
swal({
title: "Success!",
text: "Redirecting in 2 seconds.",
type: "success",
timer: 2000,
showConfirmButton: false
}, function(){
window.location.href = "//stackoverflow.com";
});
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert-dev.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.css">
Я не смог сделать это с любой функцией обратного вызова swal(sweatAlert) по умолчанию, поэтому я заставил jquery, получил класс кнопки Ok, проверяющий элемент в chrome, и сделал что-то вроде этого:
<script>
sweetAlert({
title:'Warning!',
text: 'Invalid user or password!',
type:'warning'
},function(isConfirm){
alert('ok');
});
$('.swal2-confirm').click(function(){
window.location.href = 'index.php';
});
</script>
предупреждение " Ok " в функции(isConfirm) было просто тестом, чтобы увидеть, попадет ли он в эту функцию, если да, я должен быть в состоянии перенаправить оттуда, но я не был...
поэтому я использовал jQuery, чтобы определить, была ли нажата кнопка "OK" swal, получив ее класс: ".swal2-confirm", то я мог бы перенаправить с успехом...
надеюсь, это поможет вам всем !
PS: я использую php echo для запуска скрипта, мне не нужно оставлять php для его запуска, просто используйте одинарные кавычки, и все готово !
самое лучшее и простое решение, мы можем добавить больше событий, как хорошо!
swal({ title: "WOW!",
text: "Message!",
type: "success"}).then(okay => {
if (okay) {
window.location.href = "URL";
}
});
Я думаю, это поможет. То же, что и Мистер Бармер. Но я вложил это в теги php.
вот оно....
<?php if(!empty($_GET['submitted'])):?>
<script>
setTimeout(function() {
swal({
title: "Congratulaions!",
text: "Signed up successfully, now verify your mail",
type: "success",
confirmButtonText: "Ok"
}, function() {
window.location = "index.php";
}, 1000);
});
</script>
<?php endif;?>
ни одно из вышеперечисленных решений не работало для меня, я должен был использовать .тогда
swal({
title: 'Success!',
text: message,
type: 'success',
confirmButtonText: 'OK'
}).then(() => {
console.log('triggered redirect here');
});
function confirmDetete(ctl, event) {
debugger;
event.preventDefault();
var defaultAction = $(ctl).prop("href");
swal({
title: "Are you sure?",
text: "You will be able to add it back again!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, delete it!",
cancelButtonText: "Cancel",
closeOnConfirm: false,
closeOnCancel: false
},
function (isConfirm) {
if (isConfirm) {
$.get(ctl);
swal({
title: "success",
text: "Deleted",
confirmButtonText: "ok",
allowOutsideClick: "true"
}, function () { window.location.href = ctl })
// $("#signupform").submit();
} else {
swal("Cancelled", "Is safe :)", "success");
}
});
}
существующие ответы не работает для меня, я просто использовать $('.confirm').hide()
. и это сработало для меня.
success: function(res) {
$('.confirm').hide()
swal("Deleted!", "Successfully deleted", "success")
setTimeout(function(){
window.location = res.redirect_url;
},700);