Javascript 使用表单参数onSubmit运行PHP脚本(发送电子邮件)
我正在尝试制作一个表单,在执行操作并离开站点之前,使用onSubmit运行脚本/将一些数据传递到PHP页面 我这样做的原因是设置一封确认电子邮件,发送给输入表单的人,而表单操作保存他们通过insightly输入的信息 我已经尝试了我能想到的一切,所以我为那些破烂的代码感到抱歉 这是我的表格:Javascript 使用表单参数onSubmit运行PHP脚本(发送电子邮件),javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我正在尝试制作一个表单,在执行操作并离开站点之前,使用onSubmit运行脚本/将一些数据传递到PHP页面 我这样做的原因是设置一封确认电子邮件,发送给输入表单的人,而表单操作保存他们通过insightly输入的信息 我已经尝试了我能想到的一切,所以我为那些破烂的代码感到抱歉 这是我的表格: <form id="commentForm" action="contactmail.php" method="post" onSubmit=""> <input type="h
<form id="commentForm" action="contactmail.php" method="post" onSubmit="">
<input type="hidden" name="formId" value="/*InsightlyKeyString*/"/>
<p class="normal">
<label for="insightly_firstName">First Name * :<br></label>
<input id="insightly_firstName" name="FirstName" type="text" placeholder=" First Name"/>
</p>
<p class="normal">
<label for="insightly_lastName">Last Name :<br></label>
<input id="insightly_lastName" name="LastName" type="text" placeholder=" Last Name" />
</p>
<p class="normal">
<input type="hidden" name="emails[0].Label" value="Work"/>
<label for="emails[0]_Value">E-Mail * :</label>
<input id="emails[0]_Value" type="email" name="email" class="emails" placeholder=" your@email.com"/>
</p>
<p class="normal">
<input type="hidden" name="phones[0].Label" value="Work" id="phones"/>
<label for= "phones[0]_Value">Phone * :</label>
<input id="phones[0]_Value" name="phones" type="text" placeholder="(incl. Area Code) Contact No. "/>
<span id="instructions">Fields marked with an * required</span>
</p>
<p class="normal">
<input class="buttoninput" type="submit" value="Submit"/>
</p>
因此,基本上我设想的工作方式是,我的表单应该运行sendMail(),使用ajax调用将数据传递到contactmail.php(一个只包含echo和mail()的临时文件),如果返回true,应该继续正常提交
但是,当我运行它时,它从不ping contactmail.php(我尝试在页面上使用快速警报对其进行测试)。这是有意的吗?我甚至可以在onSubmit中获得要执行的辅助页面吗?或者只能对此使用操作 我没有看到
.submit()
函数使用return false停止它代码>这样您就可以启动ajax请求了
$('form').on('submit', function(){
sendMail();
return false; //stop the default form submission
});
现在使用此函数从调用sendMail()。。但是,当您收到来自服务器的真实回执时,需要对其进行修改以正确执行重定向
下一个问题是在函数中声明函数,但从未实际执行内部函数。我也不认为这里需要两个函数,它是完全冗余的,而且
现在,我们需要修改sendmail函数,并确定完成后要重定向到的位置
function sendMail(){
$.ajax({
type: 'post',
url: 'contactmail.php',
data:{
uemail: $('.emails').val(),
ufname: $('#insightly_lastName').val(),
ulname: $('#insightly_firstName').val()
},
success: function(data){
if(data == true){
window.location = 'mysite.com/thank-you.php';
}
}
});
}
上面有两点需要注意。我已经删除了你的变量赋值。再一次,它过于冗长。不需要声明一个只使用一次的变量。另外,我正在您的成功函数中查找contactmail.php
中的返回true
。此外,我还使用了窗口.location
重定向到感谢
页面,当设置为true时。我没有看到.submit()
函数,您可以使用return false停止该函数代码>这样您就可以启动ajax请求了
$('form').on('submit', function(){
sendMail();
return false; //stop the default form submission
});
现在使用此函数从调用sendMail()。。但是,当您收到来自服务器的真实回执时,需要对其进行修改以正确执行重定向
下一个问题是在函数中声明函数,但从未实际执行内部函数。我也不认为这里需要两个函数,它是完全冗余的,而且
现在,我们需要修改sendmail函数,并确定完成后要重定向到的位置
function sendMail(){
$.ajax({
type: 'post',
url: 'contactmail.php',
data:{
uemail: $('.emails').val(),
ufname: $('#insightly_lastName').val(),
ulname: $('#insightly_firstName').val()
},
success: function(data){
if(data == true){
window.location = 'mysite.com/thank-you.php';
}
}
});
}
上面有两点需要注意。我已经删除了你的变量赋值。再一次,它过于冗长。不需要声明一个只使用一次的变量。另外,我正在您的成功函数中查找contactmail.php
中的返回true
。此外,我还使用了窗口.location
重定向到谢谢
页面,当设置为true时。我认为您应该使用jquery。大概是这样的:
$('#commentForm').submit(function(e) {
e.preventDefault();
$.ajax({
type: 'post',
url: 'contactmail.php',
data:$(this).serialize(),
success: function(data){
return true;
}
});
});
然后,在您的contactmail.php
文件中,您将在$\u POST
中获得所有数据。请注意,$\u POST的索引将与输入的属性名相同。我认为您应该使用jquery。大概是这样的:
$('#commentForm').submit(function(e) {
e.preventDefault();
$.ajax({
type: 'post',
url: 'contactmail.php',
data:$(this).serialize(),
success: function(data){
return true;
}
});
});
然后,在您的contactmail.php
文件中,您将在$\u POST
中获得所有数据。请注意,$\u POST
的索引将与输入的属性名称相同。我只是过度声明了一些事情,因为我需要进行调试,以确保默认值按我希望的方式运行。非常感谢您的回复,我认为忘记更改默认值是我的主要问题。今晚我将从您的示例中尝试实现这一点=)按照我理解问题的方式,在sendMail
的成功中,它不需要重定向,而是让常规表单提交继续进行。@Gorkk您知道……随着时间的推移,您会感觉到人们想要什么。并不是每个人都能说一口流利的英语,所以我试图弄清他们的真正目的是什么。在这种情况下,我可能看得太远了,而你可能是对的@Ohgodwhy或我可能没有正确的感觉(使用表单数据通过ajax发送电子邮件,然后提交表单很尴尬,但使用ajax提交只是在事后重定向也是如此^^)@Ohgodwhy Hi只是突然出现,以确认我使用您的示例完成了此工作,谢谢!!!我只是过度声明了一些事情,因为这是我为调试所做的事情,以确保默认值按我希望的方式运行。非常感谢您的回复,我认为忘记更改默认值是我的主要问题。今晚我将从您的示例中尝试实现这一点=)按照我理解问题的方式,在sendMail
的成功中,它不需要重定向,而是让常规表单提交继续进行。@Gorkk您知道……随着时间的推移,您会感觉到人们想要什么。并不是每个人都能说一口流利的英语,所以我试图弄清他们的真正目的是什么。在这种情况下,我可能看得太远了,而你可能是对的@Ohgodwhy或我可能没有正确的感觉(使用表单数据通过ajax发送电子邮件,然后提交表单很尴尬,但使用ajax提交只是在事后重定向也是如此^^)@Ohgodwhy Hi只是突然出现,以确认我使用您的示例完成了此工作,谢谢!!!