我正在尝试使用PHP的mail()函数发送邮件。
我有一个按钮(发送邮件),点击该邮件必须被触发。由于PHP是服务器端脚本语言,因此我使用Javascript来触发PHP函数。发生了一件非同寻常的事件每当我加载页面时,邮件都会被触发。所以,我发出警报和回声来检查代码逻辑是否正确。
有趣的是,当我点击按钮时,邮件不会被触发。我哪里错了? 请看我的代码:
<input type="button" onclick="jMail()" value="Send Mail"/>
<script>
function jMail()
{
alert("Inside Javascript Function");
alert("<?php PHPFunction(); ?>");
}
</script>
<?php
function PHPFunction(){
echo("Inside PHP Function");
mail("to@example.com", "Help Mee", "Definitely Help me", "From:from@example.com");
echo("Mail Sent");
}
?>
答案 0 :(得分:2)
PHP是服务器端语言,而Javascript是客户端语言。我认为你们混淆了两者,并试图以一种永远无法发挥作用的方式混合使用它们。
加载页面时,这些步骤按顺序进行:
<input type="button" onclick="jMail()" value="Send Mail"/>
当您按下按钮时,事件onclick
确实已触发,但在页面完全加载后。此时,服务器已经解释了所有PHP代码,没有重新加载页面就没有机会再次执行它。
示例:here您可以看到代码详细说明的结果(在 stdout 下)。如您所见,客户端留下了一个不含PHP的网页。
如果您正在寻找在页面加载后发生事件时触发PHP代码的方法,建议您查看this question。
另外,this question上的programmers.stackexcange.com可以帮助您澄清客户端和服务器端之间的区别,如果不清楚的话。
答案 1 :(得分:0)
你不能以这种方式从javascript触发PHP。创建另一个PHP文件,并使用AJAX javascript请求调用它。
答案 2 :(得分:0)
<form method="post">
<input type="submit" value="Send Mail" />
</form>
<?php
if(isset($_POST)){
///do sent mail here
mail("to@example.com","Help Mee","Definitely Help me","From:from@example.com");
}
?>
答案 3 :(得分:0)
每次你做
<?php PHPFunction();
你发邮件..
也许你可以玩像
这样的东西<?php
if(array_key_exists('postMail',$_POST)){
echo ("Inside PHP Function");
//if(empty($_POST['mailContent'])){/*angry blablabla*/}
mail("to@example.com","Help Mee",$_POST['mailContent'],"From:from@example.com");
echo ("Mail Sent");
die();
}?>
<input type="button" onclick="jMail()" value="Send Mail"/>
<script>
function jMail()
{
alert("Inside Javascript Function");
var xhr=new XMLHttpRequest();
xhr.open("POST","?");
var fd=new FormData();
fd.append("postMail","true");
fd.append("mailContent","fooooobar");
xhr.send(fd);
}
</script>
答案 4 :(得分:0)
PHP是一种服务器端脚本语言,已由服务器解释,然后发送到客户端(即浏览器)以解释任何客户端脚本(来自JavaScript)。
但如果想要服务器处理响应式网页,请尝试使用表单并输入标签及其属性,将请求发送回服务器
但如果你想要一个快速的方法尝试使用AJAX。