Запустить предупреждение JavaScript в переполнении стека

Я хотел опубликовать предупреждение javascript (всплывающее окно с сообщением), чтобы просто сказать: «Спасибо! Вы добавлены!». После того, как пользователь введет данные в форму и нажмет кнопку отправки.

Я гуглил, как это сделать, однако, добавляя его, он никогда не работал и пробовал разные способы, но сейчас я в тупике от того, как это сделать. Если кто-то знает, что я делаю не так, то любая помощь будет высоко ценится.

Я также хотел бы отметить это в отдельном файле php.

Ниже вы найдете мой код;

insert.php

<?php
$con=mysqli_connect("localhost","cl51-main-3i6","password","cl51-main-3i6");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$firstname = mysqli_real_escape_string($con, $_POST['firstname']);
$lastname = mysqli_real_escape_string($con, $_POST['lastname']);
$email = mysqli_real_escape_string($con, $_POST['email']);

$sql="INSERT INTO emails ( Firstname, Lastname, Email) VALUES ( '$firstname', '$lastname', '$email')";

if (!mysqli_query($con,$sql)) {
die('Error : ' . mysql_error($con));
}

echo '<script language="javascript">';
echo 'alert("Thank you! You've now joined the e-mail club!")';
echo '</script>';

header("Location: http://isometricstudios.co.uk/news.html");
exit;

mysqli_close($con);
?>

2

Решение

Проблема в том, что header () немедленно выполнит перенаправление. использование window.location в <script> вместо header(location)

<?php
$con=mysqli_connect("localhost","cl51-main-3i6","password","cl51-main-3i6");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$firstname = mysqli_real_escape_string($con, $_POST['firstname']);
$lastname = mysqli_real_escape_string($con, $_POST['lastname']);
$email = mysqli_real_escape_string($con, $_POST['email']);

$sql="INSERT INTO emails ( Firstname, Lastname, Email) VALUES ( '$firstname', '$lastname', '$email')";

if (!mysqli_query($con,$sql)) {
die('Error : ' . mysql_error($con));
}

echo '<script language="javascript">';
echo 'alert("Thank you! You've now joined the e-mail club!")';
echo 'window.location.href="http://isometricstudios.co.uk/news.html";';
echo '</script>';

exit;

mysqli_close($con);
?>

Теперь оповещение будет отображаться и перенаправляться только при нажатии кнопки ОК.

1

Другие решения

Вы записали ‘в вашей строке?

echo 'alert("Thank you! You\'ve now joined the e-mail club!")';
0

Вы должны избегать одинарных кавычек в вашей строке, которые вы повторяете:

echo 'alert("Thank you! You\'ve now joined the e-mail club!")';
0

Ваш код в порядке, кроме одной строки

 echo 'alert("Thank you! You've now joined the e-mail club!")';

Вы используете ‘s, чтобы процитировать строку, но у вас есть’ в вас. Напишите «У вас есть» вместо этого. 🙂

echo 'alert("Thank you! You have now joined the e-mail club!")';

Вы могли бы также избежать этого, как сказали другие ответчики, но это делает код немного более грязным, на мой взгляд

0

Если вы перенаправляете браузер с помощью заголовка местоположения, любой код javascript на самой странице не выполняется, потому что вместо этого загружается страница, на которую вы перенаправляете.

Кроме того, я не думаю, что вы можете выводить или иным образом выводить какой-либо контент перед вызовом функции заголовка.

Если вы хотите показать предупреждение, сделайте это на странице, на которую вы перенаправляете, или, если это не под вашим контролем, перенаправьте, используя javascript вместо заголовка Location:

document.location = 'http://isometricstudios.co.uk/news.html';

Кроме того, вероятно, проще не использовать echo для написания javascript, потому что тогда вам придется избегать кавычек, чего вы не смогли сделать в

echo 'alert("Thank you! You've now joined the e-mail club!")';

Проще просто держать javascript вне ваших тегов php, так что-то вроде

<?php
(do server-side php stuff)
?>

<script>
(do client-side javascript stuff)
</script>

<?php
(do more server-side php stuff)
?>
0
По вопросам рекламы [email protected]