我在我的網站上有一個電子郵件註冊表單,我最近添加了驗證。AJAX電子郵件表格不會提交
現在,表單將不會發送或提供錯誤消息。當我檢查檢查我看到以下錯誤:
TypeError: null is not an object (evaluating 'document.getElementById(update[0]).innerHTML = update[1]')
這是我contact.php
文件
<?php
$to = "[email protected]";
$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>
任何有識之士將不勝感激。
您是否嘗試過'console.log(update [0]);'以確保您的http響應正在被拆分並給出元素的正確ID? – NewToJS 2015-03-02 23:31:12
謝謝。我不確定你的意思。你能否詳細說明一下? – 2015-03-03 00:04:42
當您輸入錯誤的電子郵件時,您是否收到此錯誤?如果是這樣,您需要將'|'添加到您的錯誤消息中。你的php回覆正在被'|'分隔,並且第一個數組被用來保存Div ID,你的php錯誤回覆(email)沒有div id,所以當你分裂它時會導致問題。我認爲你不需要替換'echo(「$ email不是一個有效的電子郵件地址」);''用echo(「DivID | $ email不是一個有效的電子郵件地址」);'**丟失echo中的條! * – NewToJS 2015-03-03 09:37:12