在SO Chat上讨论了几个小时之后,有人帮我开始了,自己做了一些补充,下面的JSFiddle就产生了:
我在另一台在线服务器上创建了一个测试mysql数据库。我还在其中放置了一个验证文件,其中包含以下php代码:
<?php
$db = new PDO('mysql:host=localhost;dbname=...', '...', '...');
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$emailInput = $_POST['signUpemail'];
$result = $db->prepare('SELECT * FROM people WHERE email=?');
$result->execute(array($emailInput));
$count = count($result->fetchAll());
if ($count > 0){
echo 0;
}
else {
echo 1;
}
?>
上述文件名为validation.php
,位于同一台服务器上。该文件由JSFiddle AJAX代码中的url
参数访问。
我在表单声明中添加了action="google.com"
,意图是如果输入的用户名有效且输入的电子邮件在对我的数据库进行检查后有效,则会将用户重定向到该URL。
数据库中已存在的测试电子邮件是test7@gmail.com
。
我做错了什么?
编辑:抱歉,我没有说明原帖中的问题是什么。问题是电子邮件根本没有验证。无论我放在文本框中的是哪个电子邮件地址,无论它是否在数据库中,都不会通过。该页面未被重定向到google.com。我添加google.com的唯一原因是要明确表单是否实际有效。
答案 0 :(得分:2)
您的JavaScript代码不会向PHP脚本发送任何表单参数:
document.getElementById('signUpemail').onkeyup = function (e) {
$.ajax({
type: 'POST',
url: 'http://demcode.5gbfree.com/validate.php',
success: function (data) {
createError('Username is already registered');
}
});
}
将some data放入$.ajax()
的参数中,看看会发生什么。