[英]PHP/JavaScript Email Contact Form
我試圖使用電子郵件的聯系表單,默認情況下,在提交郵件后重定向到另一個頁面。 然而,我希望在郵件提交后保留在同一頁面上,但是彈出消息告訴發件人,而不是郵件已經發送但沒有離開頁面。 下面是我的HTML頁面中的javascript和我正在嘗試使用的PHP。
任何人都可以解釋我錯過了什么以及如何做到這一點?
<script type="text/javascript">
$(document).ready(function() {
$("#contactFormSubmit").click(function( event ) {
$.post( “/contactengine.php", $("#contactForm").serialize() );
$('#contactFormConfirmation').slideDown();
$('#submitFormReset').click();
});
});
</script>
<?php
$EmailFrom = "";
$EmailTo = "";
$Subject = "";
$Name = Trim(stripslashes($_POST['Name']));
$Email = Trim(stripslashes($_POST['Email']));
$Message = Trim(stripslashes($_POST['Message']));
// validation
$validationOK=true;
if (!$validationOK) {
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
exit;
}
// prepare email body text
$Body = "";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Message: ";
$Body .= $Message;
$Body .= "\n";
// send email
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");
// redirect to success page
if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}
?>
好的,所以我想你應該試試這個!
首先運行php腳本,然后發送電子郵件,然后在php腳本底部包含此行
header("Location: http://myurl.com/contact?check=1");
然后在聯系頁面上有一個隱藏的輸入,其中包含值0,稱為檢查,然后使用url參數填充輸入框。
在頁面加載時檢查隱藏輸入框的值以查看其是否為1或0.如果其1顯示彈出框,如果其0正常加載頁面
我希望這有幫助!
使用此代碼
<form id="contactForm" method="post" action="contactengine.php">
<div class="row half">
<div class="6u">
<input type="text" class="text" placeholder="Name" name="Name" />
</div>
<div class="6u">
<input type="text" class="text" placeholder="Email" name="Email" />
</div>
</div>
<div class="row half">
<div class="12u">
<textarea name="message" placeholder="Message" name="Message"></textarea>
</div>
</div>
<div class="row" id="contactFormConfirmation" style="display: none;">
<div class="12u">
<p style="color: white; background-color: #FF3B30;width: 325px;border-radius: 0.25em;padding: .3em;margin: 0 auto;">Thank you for getting in touch!</p>
</div>
</div>
<div class="row">
<div class="12u">
<ul class="actions">
<li>
<input type="submit" name="submit" id="contactFormSubmit" class="form-button" value="Submit" />
</li>
<li>
<input type="reset" name="reset" id="submitFormReset" class="form-button alt" value="Clear" />
</li>
</ul>
</div>
</div>
</form>
<form name="checkf" id="checkf">
<input name="check" id="check" value="0">
</form>
編輯:
將您添加的代碼更改為下面的代碼我忘了在lol中添加一行
<script type="text/css">
function fcheckf(){
var x = document.getElementById('check').value;
if(x == 0)
{
return false;
}
else
{
alert("Thank you for submitting your data! - This is the pop up box content!");
}
}
</script>
添加上述內容后,請更改:
<body>
標簽,對此:
<body onload="fcheckf()">
另一個編輯
現在在之前添加它
</body>
標簽。 這很重要,它粘貼在body標簽之前的行:)
<script type="text/javascript">
var data=location.search;
if(data) {
data=location.search.substring(1);
data=data.split('&');
var pairs={};
for(var i=0; i<data.length; i++){
var tmp=data[i].split('=');
pairs[tmp[0]]=tmp[1];
}
var f = document.checkf;
for (var i in pairs) {
if(f.elements[i]) {f.elements[i].value = pairs[i];}
}
}
編輯56981 V3
在您的HTML中使用此代碼
<script>
function fcheckf(){
var x = document.getElementById('check').value;
if(x == 0)
{
return false;
}
else
{
alert("Thank you for submitting your data! - This is the pop up box content!");
}
}
</script>
<section id="fourth" class="contact">
<header>
<div class="container">
<span class="image-header-contact"><img src="images/contact-header.png" alt="Video" /></span>
<h2>Get In Touch</h2>
</div>
</header>
<div class="content style4 featured">
<div class="container small">
<form id="contactForm" method="post" action="contactengine.php">
<div class="row half">
<div class="6u">
<input type="text" class="text" placeholder="Name" name="Name" />
</div>
<div class="6u">
<input type="text" class="text" placeholder="Email" name="Email" />
</div>
</div>
<div class="row half">
<div class="12u">
<textarea name="message" placeholder="Message" name="Message"></textarea>
</div>
</div>
<div class="row" id="contactFormConfirmation" style="display: none;">
<div class="12u">
<p style="color: white; background-color: #FF3B30;width: 325px;border-radius: 0.25em;padding: .3em;margin: 0 auto;">Thank you for getting in touch!</p>
</div>
</div>
<div class="row">
<div class="12u">
<ul class="actions">
<li>
<input type="submit" name="submit" id="contactFormSubmit" class="form-button" value="Submit" />
</li>
<li>
<input type="reset" name="reset" id="submitFormReset" class="form-button alt" value="Clear" />
</li>
</ul>
</div>
</div>
</form>
<form name="checkf" id="checkf">
<input name="check" id="check" value="1">
</form>
</div>
</div>
</section>
<script>
var data=location.search;
if(data) {
data=location.search.substring(1);
data=data.split('&');
var pairs={};
for(var i=0; i<data.length; i++){
var tmp=data[i].split('=');
pairs[tmp[0]]=tmp[1];
}
var f = document.checkf;
for (var i in pairs) {
if(f.elements[i]) {f.elements[i].value = pairs[i];}
}
}
</script>
如果你想留在同一頁面,你應該使用ajax。 我建議嘗試jquery $.ajax
調用,因為它似乎更容易。
這是一個簡單的例子:
$.ajax({
url: "pathToThePHPGoesHere", // Here you have to place the path to the php file
type: 'GET',
data: $.extend({
mailSubject: encodeURI(mailSubjectVar), // 1st variable name and value - you can place the content of your HTML box here
mailBody: encodeURI(mailBodyVar) // 2nd variable name and value - you can place the content of your HTML box here
}, tJS.getCommonPostData()),
dataType: "json",
cache: false,
success: function (responseText, status, xhr) {
alert("Job done!"); // Here is what happens when the request is executed
},
error: function (jqXHR, textStatus, error) {
tJS.manageError(jqXHR); // show an error message if something goes wrong
}
});
您需要decode
PHP腳本中的變量。
我不是一個php開發人員,但你的代碼應該是這樣的:
$mailSubject = urldecode($_POST['mailSubject']);
$mailBody = urldecode($_POST['mailBody']);
在.$ajax
調用中我編碼了字符,所以你可以傳輸UTF-8
,這就是你需要在php中使用urldecode
原因。
要使用上面的代碼,請不要忘記在項目中包含jquery庫。
做這樣的事情:
<script type="text/javascript">
$(document).ready(function() {
$("#contactFormSubmit").click(function( event ) {
$.post("contactengine.php", $("#contactForm").serialize(), function(data) {
$('#contactFormConfirmation').html(data.message).slideDown();
},'json');
});
});
</script>
<?php
//code to send email here...
$success = true;
$result['status'] = "ok";
$result['message'] = "Your email has been sent.";
if (!$success){
$result['status'] = "error";
$result['message'] = "Unable to send your message.";
}
echo json_encode($result);
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.