我有一个像这样的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,但是根本没有执行脚本功能。
任何想法都会发生?
提前谢谢
答案 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变量