Javascript AJAX电子邮件表单将不会提交

Javascript AJAX电子邮件表单将不会提交,javascript,php,ajax,forms,validation,Javascript,Php,Ajax,Forms,Validation,我在我的网站上有一个电子邮件注册表,我最近在其中添加了验证 现在,表单将不会发送或提供错误消息。当我检查inspector时,我看到以下错误: TypeError:null不是对象(正在评估“document.getElementById(更新[0])。innerHTML=update[1]”) 这是我的contact.php文件 <?php $to = "hello@interzonestudio.com"; $subject_prefix = ""; if(!isset($_G

我在我的网站上有一个电子邮件注册表,我最近在其中添加了验证

现在,表单将不会发送或提供错误消息。当我检查inspector时,我看到以下错误:

TypeError:null不是对象(正在评估“document.getElementById(更新[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");
}
?>

我想这就是你想要的:
document.contactform.send.disabled=false

使用id=“msg”

替换

document.getElementById(更新[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=$\u 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  (}) 
$to=”hello@interzonestudio.com";
$subject_prefix=“”;
if(isset($_POST['action']){/****缺少({)
$subject=“新闻稿注册”;//发件人主题
$message=trim($_POST['email']);//发件人主题
$email=trim($_POST['email']);//发件人的电子邮件地址
如果(!filter\u var($email,filter\u VALIDATE\u email)==false){
邮件($to,$subject,$message,“发件人:“.$email.”);
//****带条的Div ID缺失(contactarea |)
echo'contactarea |谢谢。我们保证您不会后悔的。”;
//****缺少其他(})
}否则{
echo(“contactarea |$email不是有效的电子邮件地址”);
}
}//****如果已设置(}),则关闭
我希望我在这个答案中涵盖了你所有的问题

如果您不理解任何内容,请在下面留下评论,我将更新答案以帮助您理解此答案中的任何内容。我希望你能理解这段源代码,而不仅仅是复制粘贴。你不会从复制/粘贴中学到什么

提示:
在将php字符串放入mail()之前,请先清理它们


我希望这有帮助。快乐编码

您是否尝试过
console.log(更新[0])
以确保您的http响应被拆分并为元素提供正确的ID?谢谢。我不知道你说的是什么意思。你能详细说明一下吗?当你输入错误的电子邮件时,你是否收到了这个错误?如果是这样,您需要将
|
添加到错误消息中。您的php回复正在从
|
拆分,第一个数组用于保存Div ID,您的php错误回复(电子邮件)没有Div ID,因此拆分时会出现问题。我认为您不需要替换echo($email不是有效的电子邮件地址)带有
echo(“DivID |$email不是有效的电子邮件地址”)回声中缺少条!您的PHP中也有多个错误,
{
请重新阅读您的PHP。您还需要将ajax调用类型更改为
POST
而不是
GET
。您还需要将PHP文件中的此更改为
\u POST[]
我想发布一个答案,但如果我这样做,就意味着要覆盖所有错误,这太多了。谢谢!这会验证,但是如果用户输入错误的电子邮件,那么如果用户输入正确的电子邮件,它将不会发送。您仍然需要将此电子邮件地址发送到connect.php。因为您正在使用php代码进行电子邮件验证。是的。您知道我是如何做到的吗可以这样做吗?如果你想在html页面中验证表单,你必须使用javascript并验证输入的字符。(regex)或者你可以使用angulars.js(这将是最好的选择)。如果你想在html页面中验证表单,你必须使用javascript并验证输入的字符(regex)然后,如果输入不正确,您可以启用或禁用表单提交,或者您可以使用angulars.js(这将是更好的选择)。目前您没有使用表单属性(onfocus、onblur)。这行文档不需要。contactform.send.disabled=true;除非您的网站中有一些需要这行的代码。
var formdata = new FormData();
formdata.append("email", email);
formdata.append("action", "send");
http.open('POST', 'contact.php');
http.onreadystatechange = handleResponse;
http.send(formdata);
$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  (})