【发布时间】:2015-03-02 23:18:26
【问题描述】:
我的网站上有一个电子邮件注册表单,我最近添加了验证。
现在,表单将不会发送或提供错误消息。当我检查检查器时,我看到以下错误:
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>
任何见解将不胜感激。
【问题讨论】:
-
您是否尝试过
console.log(update[0]);以确保您的 http 响应被拆分并为元素提供正确的 ID? -
谢谢。我不确定你的意思。能详细点吗?
-
您是否在输入错误的电子邮件时收到此错误?如果是这样,您需要将
|添加到您的错误消息中。您的 php 回复正在从|拆分,第一个数组用于保存 Div ID,您的 php 错误回复(电子邮件)没有 div id,因此拆分时会导致问题。我认为您不需要将echo("$email is not a valid email address");替换为echo("DivID|$email is not a valid email address");回声中缺少条! -
您的 PHP 也有多个错误,
{请重新阅读您的 php。您还需要将您的 ajax 调用类型更改为POST而不是GET。您还需要在 php 文件中将其更改为_POST[]我想发布作为答案,但如果我这样做了,这将意味着涵盖所有错误,而且这个错误太多了。
标签: javascript php ajax forms validation