Javascript 如何防止在PHP表单订阅后重新加载页面?
我有这个基本的PHP表单,我想在按下提交按钮后防止页面刷新。或者更像,我希望在发送表单后创建一个确认段落 我非常接近,但我想这一段没有显示出来,因为页面正在刷新Javascript 如何防止在PHP表单订阅后重新加载页面?,javascript,php,html,jquery,forms,Javascript,Php,Html,Jquery,Forms,我有这个基本的PHP表单,我想在按下提交按钮后防止页面刷新。或者更像,我希望在发送表单后创建一个确认段落 我非常接近,但我想这一段没有显示出来,因为页面正在刷新 if($_POST["submit"]) { $recipient="contact@d.com"; $subject="Form to email message"; $sender=$_POST["sender"]; $senderEmail=$_POS
if($_POST["submit"]) {
$recipient="contact@d.com";
$subject="Form to email message";
$sender=$_POST["sender"];
$senderEmail=$_POST["senderEmail"];
$message=$_POST["message"];
$mailBody="Name: $sender\nEmail: $senderEmail\n\n$message";
mail($recipient, $subject, $mailBody, "From: $sender <$senderEmail>");
$thankYou="<div class='thanksDiv'><p>Thank you! Your message has been sent. I'll get back to you ASAP. <i class='as fa-smile-beam'></i></p><a style='cursor:pointer' class='thanksExit'><i class='fas fa-times fa-2x'></i></a></div>";
}
if($\u POST[“提交”]){
$recipient=”contact@d.com";
$subject=“表单到电子邮件”;
$sender=$_POST[“sender”];
$senderEmail=$\u POST[“senderEmail”];
$message=$_POST[“message”];
$mailBody=“Name:$sender\nEmail:$senderEmail\n\n$message”;
邮件($recipient,$subject,$mailBody,“From:$sender”);
$Thankyu=“谢谢!您的邮件已发送。我会尽快回复您。”;
}
名称
电子邮件
我能帮忙吗?
它们是解决该问题的不同方式和方法
我是如何做到的:
我有一个处理php,它将接收帖子并发送电子邮件,然后我将用户重定向到感谢页面
header("location: thanks.php);
exit();
您还可以使用ajax,并在按下按钮后禁用该按钮。这取决于开发人员、框架和编程偏好。一些解决方案: 如果用户不需要停留在与相同的页面上,则重定向到成功/感谢页面 如果用户需要停留在同一页面上,则您有几个选项: 方法A:
if(!isset($\u POST['field']){$\u SESSION[''..
重新加载同一页面,并根据脚本的执行位置,将php header()或javascript附加到URL后的
'&t='.time()
。首先需要将一些数据从php发送回AJAX
session_start();
if(isset($_POST["submit"])) {
$recipient="contact@d.com";
$subject="Form to email message";
$sender=$_POST["sender"];
$senderEmail=$_POST["senderEmail"];
$message=$_POST["message"];
$mailBody="Name: $sender\nEmail: $senderEmail\n\n$message";
mail($recipient, $subject, $mailBody, "From: $sender <$senderEmail>");
$thankYou="<div class='thanksDiv'><p>Thank you! Your message has been sent. I'll get back to you ASAP. <i class='as fa-smile-beam'></i></p><a style='cursor:pointer' class='thanksExit'><i class='fas fa-times fa-2x'></i></a></div>";
echo $thankYou;
}
名称
电子邮件
我能帮忙吗?
这将通过javascript和ajax来完成。而“不起作用”对于继续帮助您解决问题并没有太大帮助。请包含您的ajax代码。我确信,如果php文件编写正确,这和ajax post调用将起作用。我的错!我已经使用了:$(“#myForm”).submit(函数(){$.post($(This.attr(“action”),$(This).serialize();return false;});上面的“AJAX”中的一个错误是它不是AJAX..缺少$.AJAX({
等等。是的,这是一个快速的方法,但我不想重定向用户。-坏UX为什么是坏UX?这种改变是在服务器端,用户不知道代码在哪里执行或重定向。你是什么意思?用户提交表单后被重定向到另一个页面很烦人。很简单。是吗用户关心您如何编写php代码吗?这对用户来说是透明的,没有呈现的页面不是加载一个页面并重定向到另一个页面。您进行处理,然后将其发送到感谢页面。这种方法非常正常。顺便说一句,这也是消除刷新或双击ajax时重新提交的最干净方法。No复杂的会话处理,没有额外的代码会带来比解决方案更多的问题。做了这些更改后,现在我在加载此页面不工作时收到一个eror HTTP错误500>,感谢您的解释though@DianaCristina这表明您的PHP或Web服务器有错误当我将if($\u POST[“submit”])替换为if(issset($\u POST[“submit”])时,我得到了那个错误。尽管如此,当我将if($\u POST[“submit”])保留为if($\u POST[“submit”])时,它仍然会重新加载页面。其余内容与您编写的页面相同。@DianaCristina theisset()
函数应该可以工作,请参阅:如果不可以,并且生成错误,这表明您的PHP存在问题。找到问题所在。只是一个恼人的打字错误。它是isset而不是isset。它仍然不工作。现在我单击“提交”按钮,但什么也没有发生-这很好,因为它不会重新加载页面,但邮件不会发送。是吗你知道我能做什么吗?