表单提交后运行脚本和php

时间:2017-03-29 08:53:55

标签: javascript php forms

我有一个像这样的html表单:

<form method="get" action="save.php">
<input type="email" id="email" name="email"/>
<input type="submit" name="submit" value="Submit" />
</form>

在save.php中我有这样的东西:

<?php
session_start();

$email = $_REQUEST['email'];
$email_content = "Thank you for your subscription";
mail($email,"Thank you",$email_content);
header("Location:thankyou.php");
?>

现在在save.php文件中,我需要发送此电子邮件,但也要回显运行js函数的脚本。例如

<?php
    echo "<script>";
    echo "<script src='my_path_to_file/file.js'></script>";
    echo "var subscriberEmail = '" . $email . "';";
    echo "mySubscribe(subscriberEmail);";
    echo "</script>";
 ?>

现在,如果我在mail()之前放置脚本的回显,那么我不会去thankyou.php,mail()没有执行,我不会去thankyou.php但是脚本功能有效。如果我在邮件后放置脚本回显,那么就发送邮件了,我去了thankyou.php,但是根本没有执行脚本功能。

任何想法都会发生?

提前谢谢

2 个答案:

答案 0 :(得分:2)

这是因为echo命令将内容发送到浏览器,并且标题重定向永远不会起作用。

您可以尝试使用类似的东西:

<?php
echo "<script>";
echo "<script src='my_path_to_file/file.js'></script>";
echo "var subscriberEmail = '" . $email . "';";
echo "mySubscribe(subscriberEmail);";
echo "document.location.href='thankyou.php';";
echo "</script>";
?>

这意味着,将重定向命令从php代码移动到javascript。

答案 1 :(得分:0)

mySubscribe(subscriberEmail)中可能存在一些错误;功能。这就是为什么你把脚本放在电子邮件和标题之前(“Location:thankyou.php”);它不发送邮件并重定向您。而且,如果您之前放置脚本,则尚未设置$ email变量