第一次发布海报,长期阅读,所以我会开门见山。
我正在为学校做一个项目,这个问题远远超出了项目的要求,但一旦完成,它就会看起来很棒。我有三段不合作的代码——一段html/php、一段php和javascript。
我的代码的最终目标是:这是一份表格,请提交您的电子邮件,如果是@trnty.edu地址(我的学校),请提交表格。目前的问题是表单提交了空白数据——我的sql服务器上有很多空行就是证明。
我测试了手动设置变量,它确实有效(通过emailsubmit.php代码),emailcheck.js代码确实检查了一封正确的电子邮件,但它们之间没有正确地交谈。
你介意帮我一把吗?我已经做了大约3个星期了,通过谷歌搜索这个(和其他)网站,寻找可能的解决方案。非常感谢!(我的表单代码来自主页)
<div id="signupform">
<form id="signup" action="scripts/emailsubmit.php" method="POST">
<input type="email" name="email" placeholder="school email address" />
<button id="sub">Submit</button>
</form>
我目前的Javascript——我不确定该用什么或如何填补空白。。。
$(function(){
$('#signup').submit(function()
{
if(validateEmail($('input').val()))
{
return true;
}
else
{
return false;
}
});
function validateEmail(email)
{
var re = /^'s*['w'-'+_]+('.['w'-'+_]+)*'@['w'-'+_]+'.['w'-'+_]+('.['w'-'+_]+)*'s*$/;
if (re.test(email))
{
if (email.indexOf('@trnty.edu', email.length - '@trnty.edu'.length) !== -1)
{
//alert('Submission was successful.'); //if true, submit form -- see video
return true;
}
else
{
alert('Email must be a Trinity email address (your.name@trnty.edu).');
return false;
}
}
else {alert('Not a valid e-mail address.');}
}
});
Myphp代码。
<?php
$dbhost = 'localhost';
$dbuser = 'service';
$dbpass = '!@#$%';
$db = 'tbv_main';
$con = mysqli_connect($dbhost,$dbuser,$dbpass,$db);
//$email = $_POST['email'];
//$email = 'itworked@kickass.net';
$sql = "INSERT INTO stage1 (email, counter) VALUES ('$email', NULL)";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "Email: $email , 1 record added";
?>
您的jQuery .submit()
正在取消return false;
的默认表单提交,但没有ajax可以将数据发送到服务器,因此您实际想要做的是在负面警报后返回false,在regexp通过时返回true,然后在提交函数中检查它。
$('#signup').submit(function() {
if(validateEmail($('input').val())){
return true;
}else{
return false;
}
});
然后在验证函数中。
var re = /^'s*['w'-'+_]+('.['w'-'+_]+)*'@['w'-'+_]+'.['w'-'+_]+('.['w'-'+_]+)*'s*$/;
if (re.test(email)) {
if (email.indexOf('@trnty.edu', email.length - '@trnty.edu'.length) !== -1)
{
//alert('Submission was successful.'); //if true, submit form -- see video
return true;
}
else {
alert('Email must be a Trinity email address (your.name@trnty.edu).');
return false;
}
} else {
alert('Not a valid e-mail address.');
return false;
}
return false;
在这样做的过程中,当regexp得到正确验证时,您的表单将提交,并且页面将刷新,从而引发php代码。