2014-10-07 3 views
2

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

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

Я также хотел бы отметить это в отдельном файле 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); 
?> 
+0

Во-первых, вы не можете изменить 'заголовок()' после отправки содержимого HTML из в стр.если вы делаете это, я бы рекомендовал переслать их на страницу успеха с заголовком '$ _GET', указав успешный заголовок (" Location: http://isometricstudios.co.uk?success=true ")', затем на целевая страница, 'if ($ _ GET ['success'] == 'true')' введите код предупреждения – Kender

+1

, учитывая, что ваша эхо-строка с предупреждением содержит ошибки синтаксиса php, вы даже не попадете в заголовок() для запуска перенаправления ... –

ответ

1

Проблема заключается в том, что заголовок() немедленно выполнит перенаправление. использовать 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); 
?> 

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

0

ли вы scaped 'в строке?

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!")'; 

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

0

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

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

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

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

Также , это, вероятно, проще не использовать эхо для написания 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) 
?> 
Смежные вопросы