[英]AJAX email form will not submit
我的網站上有一個電子郵件注冊表單,我最近添加了驗證。
現在,表單不會發送或提供錯誤消息。 當我檢查檢查員時,我看到以下錯誤:
TypeError:null不是對象(評估'document.getElementById(update [0])。innerHTML = update [1]')
這是我的contact.php
文件
<?php
$to = "hello@interzonestudio.com";
$subject_prefix = "";
if(!isset($_GET['action']))
$subject = "Newsletter Sign Up"; //The senders subject
$message = trim($_GET['email']); //The senders subject
$email = trim($_GET['email']); //The senders email address
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
mail($to,$subject,$message,"From: ".$email."");
echo 'contactarea|<div id="thanks">Thank you. We promise you won’t regret it.</div>';
else {
echo("$email is not a valid email address");
}
?>
這是我在HTML中的表單
<div id="contactarea">
<span style="font-family: 'Old Standard TT', serif;">Newsletter</span>
<form id="contactform" name="contactform" >
<input class ="email" type="text" name="email" id="inputbox" value="E-Mail"
onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"/>
<input type="submit" value="Submit" name="send" onclick="sendemail(); return false; " class="signup" >
</form>
</div>
這是我的javascript
<script language="javascript">
function createRequestObject() {
var ro;
var browser = navigator.appName;
if (browser == "Microsoft Internet Explorer") {
ro = new ActiveXObject("Microsoft.XMLHTTP");
} else {
ro = new XMLHttpRequest();
}
return ro;
}
var http = createRequestObject();
function sendemail() {
var email = document.contactform.email.value;
document.contactform.send.disabled = true;
http.open('get', 'contact.php?email=' + email + '&action=send');
http.onreadystatechange = handleResponse;
http.send(null);
setTimeout(function() {
jQuery(document).find("#thanks").fadeOut();
}, 3000);
}
function handleResponse() {
if (http.readyState == 4) {
var response = http.responseText;
var update = new Array();
if (response.indexOf('|' != -1)) {
update = response.split('|');
document.getElementById(update[0]).innerHTML = update[1];
}
}
}
</script>
任何見解將不勝感激。
我認為這就是你要找的東西:
document.contactform.send.disabled = FALSE;
在html頁面中添加另一個id為id =“msg”的div
更換
document.getElementById(update [0])。innerHTML = update [1];
同
你可以在這里添加條件
取決於您要顯示的內容[0]或上傳[1]
document.getElementById('msg')。innerHTML = update [0] + update [1];
並在contact.php
其他地方有'}'缺失。
多個錯誤,客戶端和服務器端。
對javascript的更改。 您的表單數據未在php調用中發送。
我更改了你的調用類型get / post並使用了新的FormData()。 如果你想為你的調用添加更多內容formdata.append("ParamName", Value/Variable);
並使用$something=$_POST['ParamName'];
用PHP獲取帖子。
var formdata = new FormData();
formdata.append("email", email);
formdata.append("action", "send");
http.open('POST', 'contact.php');
http.onreadystatechange = handleResponse;
http.send(formdata);
對PHP的更改。 你錯過了if語句的開啟/關閉。
你的javascript設置的方式,你拆分php回復(|)如果發布的電子郵件無效你會導致JS錯誤,因為你的回聲中沒有divID和bar(|)。
$to = "hello@interzonestudio.com";
$subject_prefix = "";
if(isset($_POST['action'])){ // ***** Missing ({)
$subject = "Newsletter Sign Up"; //The senders subject
$message = trim($_POST['email']); //The senders subject
$email = trim($_POST['email']); //The senders email address
if (!filter_var($email, FILTER_VALIDATE_EMAIL)===false) {
mail($to,$subject,$message,"From: ".$email."");
// **** Div ID Missing with Bar (contactarea|)
echo 'contactarea|<div id="thanks">Thank you. We promise you won\'t regret it.</div>';
// **** Else missing (})
}else {
echo("contactarea|$email is not a valid email address");
}
}// **** Close if issset (})
我希望我在這個答案中涵蓋了你所有的問題。
如果你什么都不懂,請在下面發表評論,我會更新答案,以幫助你理解這個答案中的任何內容。 我寧願你把這個源代碼理解它,而不僅僅是復制粘貼。 您不會從復制/粘貼中學習。
Tip:
在將php字符串放入mail()之前清理它們。
我希望這有幫助。 快樂的編碼!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.