我在我的网站上使用联系表单,我希望它使用javascript函数使用弹出框告诉用户他们没有填写所有字段。我有这段代码:
<?php
$action=$_REQUEST['action'];
if ($action=="") /* display the contact form */
{
?>
<form action="" method="POST" enctype="multipart/form-data">
<input type="hidden" name="action" value="submit">
*Name:<br>
<input name="name" type="text" value="" size="30"/><br><br>
*Email:<br>
<input name="email" type="text" value="" size="30"/><br><br>
*Message:<br>
<textarea name="message" rows="7" cols="30"></textarea><br>
<input type="submit" value="Send email"/>
</form>
<script type="text/javascript">
function requiredFields() {
alert("Please fill in all fields!");
}
<?php
}
else /* send the submitted data */
{
$name=$_REQUEST['name'];
$email=$_REQUEST['email'];
$message=$_REQUEST['message'];
if (($name=="")||($email=="")||($message==""))
{
echo "requiredFields();";
}
else{
$from="From: $name<$email>\r\nReturn-path: $email";
$subject="Message sent using your contact form";
mail("email@email.com", $subject, $message, $from);
echo "Email sent!";
}
}
?>
</script>
但是,该网站显示以下错误:
Fatal error: Call to undefined function requiredfields() in /home/a8502709/public_html/test/contact.php on line 46
上面一行是它回应函数调用的行。如何正确调用echo中的函数?
答案 0 :(得分:1)
您没有引用echo
输出:
echo requiredFields();;
应该是:
echo "requiredFields();";
否则,您要告诉 PHP 执行requiredFields()
函数,其中在PHP中不存在。因此错误。您的目的是告诉渲染页面上的JavaScript执行该功能。因此,就PHP而言,您只需向页面输出一个字符串。
另请注意,这是语法错误:
echo "Email sent!";
这样做会将以下内容发送到<script>
块中的JavaScript:
Email sent!
当然,这不是有效的JavaScript。你可能想在页面的其他地方输出。
编辑:您的代码中似乎也存在严重的逻辑错误。如果删除不相关的行,则结构基本上是这样的:
if ($action=="") /* display the contact form */
{
?>
<script type="text/javascript">
<?php
} else {
echo "requiredFields();";
}
?>
</script>
所以......您只能打开 <script>
块中的if
标记,但在{{1>中使用标记阻止。根据定义,两者都无法执行。只有一个或另一个。所以你需要对此进行重组。
也可以关闭else
块中的<script>
标记,然后在if
块中打开另一个标记?或者有多个else
块用于HTML和JavaScript?有几种不同的方法来构建它。但是当您在浏览器中查看页面源时,您应该看到我正在谈论的内容。您会看到,如果if/else
阻止,您永远不会创建else
行,因此实际上并未执行任何JavaScript。
尽管如此,考虑到这一点,在<script type="text/javascript">
块中启动JavaScript根本没有意义。由于仅 if
块使用它。您无法在else
中定义该函数,然后尝试在if
中使用它,因为根据定义,只会执行一个或另一个。也许只需将所有JavaScript移动到else
:
else
老实说,你在这里混合使用PHP / HTML / JavaScript有点令人困惑。哪个不能让你更轻松。一旦你得到它至少工作,你可能想要重新构建它。