在提出问题之前,我尝试过出现一些问题,但没有机会使其发挥作用。当我将其添加到邮件发送成功警报时,它工作正常,但是我不想在php部分中添加脚本。
表单成功后,我试图将联系页面重定向到另一个页面,并延迟几秒钟。
这是我的Jquery ajax:
$(document).ready(function(){ $('#ContactForm').submit(function(event){ event.preventDefault(); var formValues = $(this).serialize(); $.ajax({ url:"modules/contact.inc.php", method:"POST", data:formValues, dataType:"JSON", success:function(data){ if(data.error === 'ok'){ $('#result').html(data.error); setTimeout(function() { window.location = 'index.php'; }, 1000); } else { $('#result').html(data.error); $('#ContactForm')[0].reset(); } } }); }); });
我尝试了以下setTimeout();成功功能,但没有成功:
setTimeout();
setTimeout(function() { window.location.replace("index.php"); },1000);
然后我尝试了:window.location.replace("index.php");没有setTimeout函数也无法正常工作。
window.location.replace("index.php");
window.location.href window.location.hostname window.location
这个适用于另一页中的模式
setTimeout(function() { window.location.reload(); }, 3000);
这些是我的尝试,没有机会,谢谢您的任何建议和帮助。
编辑:这是data.error包含的php部分:
$error = ""; // Validate user name if(empty($_POST["fname"])){ $error .= "<p class='error'>İsim girmediniz.</p>"; } else { $name = test_input($_POST["fname"]); } // Validate email address if(empty($_POST["email"])){ $error .= "<p class='error'>E-Posta girmediniz.</p>"; } else{ $email = $_POST["email"]; if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { $error .= "<p class='error'>E-Posta doğru formatta değil.</p>"; } } // Validate user subject if(empty($_POST["subject"])){ $error .= "<p class='error'>Konu girmediniz.</p>"; } else { $subject = test_input($_POST["subject"]); } // Validate user message if(empty($_POST["message"])){ $error .= "<p class='error'>Mesaj girmediniz.</p>"; } else { $message = test_input($_POST["message"]); } // Validate user departman if(empty($_POST["departmant"])){ $error .= "<p class='error'>departman Seçin.</p>"; } else { $departman = test_input($_POST["departmant"]); } if($error === ''){ require "../PHPMailer/mailer.php"; $mail = new mailSend(); $email = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL); $name = test_input($_POST["fname"]); $subject = test_input($_POST["subject"]); $departman = test_input($_POST["departmant"]); $message = test_input($_POST["message"]); $error = $mail->sendMail($email,$name,$subject,$departman,$message); }else{ $error .= "<p class='error'>Formda bir hata oluştu.</p>"; } $data = array( 'error' => $error ); echo json_encode($data);
编辑:工作了,谢谢您的回答,
显示导致问题的错误,$('#result').html(data.error);我将其更改为文本消息,而不是来自php的成功消息:
$('#result').html(data.error);
$('#result').html('Form successfuly'); $('#ContactForm')[0].reset(); setTimeout(function() { window.location = 'index.php'; }, 1000);
它工作正常。
String.replace()需要两个参数。如所写,它将查找字符串“ index.php”,并将其替换为任何内容。尝试添加正则表达式以匹配所有内容并替换为新的URL。
setTimeout(function() { window.location.replace( /.*/, "index.php"); },1000);
使用完整的网址(即https://yourdomain.com/index.php)或编写更好的正则表达式。例如,如果您的域名以 **.com** 结尾,则可以执行以下操作:
https://yourdomain.com/index.php
setTimeout(function() { window.location.replace( /\.com\/.*/, ".com/index.php"); },1000);