gpt4 book ai didi

javascript - 以php形式调用javascript函数

转载 作者:行者123 更新时间:2023-11-27 23:19:16 27 4
gpt4 key购买 nike

我在我的网站上使用联系表单,我希望它使用 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 中的函数?

最佳答案

您没有引用您的 echo输出:

echo requiredFields();;

应该是:

echo "requiredFields();";

否则,您将告诉 PHP 执行 requiredFields()函数,PHP 中不存在。因此出现了错误。您的目的是告诉渲染页面上的 JavaScript 执行该函数。因此,就 PHP 而言,您只是将一个字符串输出到页面。

<小时/>

另请注意,这是一个语法错误:

echo "Email sent!";

这将向 <script> 中的 JavaScript 发出以下内容 block :

Email sent!

这当然不是有效的 JavaScript。您可能想将其输出到页面的其他位置。

<小时/>

编辑:您的代码中似乎还存在严重的逻辑错误。如果删除不相关的行,您的结构基本上是这样的:

if ($action=="")    /* display the contact form */
{
?>
<script type="text/javascript">
<?php
} else {
echo "requiredFields();";
}
?>
</script>

所以...您只需打开<script>标签 if block ,但您使用 else 中的该标记堵塞。根据定义两者都不能执行。只有其中之一。所以你必须稍微调整一下结构。

也许关闭<script>标签 if也阻止,然后在 else 中打开另一个堵塞?或者有多个if/else HTML 和 JavaScript 的 block ?有几种不同的方法来构建它。但是当您在浏览器中查看页面源代码时,您应该明白我在说什么。您会看到,如果发生 else block ,你永远不会创建 <script type="text/javascript">行,因此实际上并没有执行任何 JavaScript。

不过,再仔细考虑一下,让 JavaScript 在 if 中开始根本没有意义。堵塞。因为 else block 使用它。您不能在 if 中定义该函数然后尝试在 else 中使用它因为,根据定义,只有其中一个会执行。也许只需将所有 JavaScript 移至 else :

<?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>
<?php
}
else /* send the submitted data */
{
?>
<script type="text/javascript">
function requiredFields() {
alert("Please fill in all fields!");
}
<?php
$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 "alert('Email sent!')";
}
?>
</script>
<?php
}
?>

老实说,这里的 PHP/HTML/JavaScript 组合有点令人困惑。这对你来说并不容易。一旦你让它至少工作起来,你可能会想要重新构建它。

关于javascript - 以php形式调用javascript函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35530289/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com