在向服务器端提交注册表单之前,我在检查客户端的电子邮件唯一性方面遇到了麻烦。
submitButton.onclick = function(){
var email = $('input[name = "email"]').val();
var checkEmail;
$.ajax({
url: 'serverScripts/settings/checkEmailAvailability.php',
data: {email: email},
async: false,
success: function(text){
checkEmail = text;//Return "occupied" or "freeToUse"
}
});
if(checkEmail == 'occupied'){
return false;
}
}
答案 0 :(得分:0)
您的脚本位于:serverScripts / settings / checkEmailAvailability.php
期待一个名为“email”的变量
然后你的php脚本应该查询数据库并测试它是否可用,如果它在数据库中则返回“已占用”。
否则它是一个有效的电子邮件地址。
答案 1 :(得分:0)
我怀疑这是你对变量的命名。见本节:
$.ajax({
url: 'serverScripts/settings/checkEmailAvailability.php',
data: {email: email},
async: false,
success: function(text){
checkEmail = text;//Return "occupied" or "freeToUse"
}
});
可能应该是
data: {'email': email},
注意引号。就目前而言,您正在创建
的数据元素{joe.blow@email.com, joe.blow@email.com}
虽然它应该是
{email: joe.blow@email.com}
答案 2 :(得分:-1)
我决定正确地执行该脚本:
<!DOCTYPE html>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<form action="javascript:alert('it went though pipes')" method="get">
<input type="email" name="email">
<input type="submit" name="submitButton" id="submitButton">
</form>
<script>
$('form').submit(function(){
var email = $('input[name = "email"]').val();
var checkEmail = $.ajax({
url: 'serverScripts/settings/checkEmailAvailability.php',
data: {email: email},
async: false,
success: function(data) {
result = data;
}
});
if(result.search('occupied')!=-1){
alert("You've done something WRONG");
return false;
}
})
</script>
现在可能有一些解释。它使用jQuery。 <form action="...">
只是为了好玩,将其替换为真实地址,并随意将<form>
插入实际页面。现在出了什么问题? text
在JS中保留,您无法使用它,因此我将其更改为data
。另外,我决定在搜索“被占用”时使用.search并更改你使用的方法稍微提交一下:P。
我做了快速测试页面,如果你有兴趣:(如果你想知道,唯一接受的是pass@me.com)。
http://glitchmr.pl/nuda/test.html
(另外,$.ajax
特定于jQuery,如果你还没有使用它)