首先,我到处寻找答案,但没有找到答案,如果我在某个地方遗漏了什么,请原谅我!
我正在尝试在提交 Facebook 注册表单之前检查用户名是否存在。即使验证尚未完成,注册似乎也可以继续!有没有办法在所有验证完成之前阻止表单提交?
很多答案链接到显然解决了这个问题的帖子,但实际上重要的部分缺失了。有这个答案的帖子是Here。
“Test02.aspx”的内容丢失,这是我卡住的地方。
脸书部分:
<fb:registration
redirect-uri="read.php/tools/echo"
fields="[{'name':'name'},{'name':'email'},{'name':'username','description':'Username','type':'text'},{'name':'password'}]"
onvalidate="validate_async">
</fb:registration>
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script>
function validate_async(form, cb) {
$.getJSON('test02.aspx?username=' + form.username + '?callback=?',
function(response) {
if (response.error) {
// Username isn't taken, let the form submit
cb();
}
cb({username: 'That username is taken'});
});
}
</script>
我不知道在 test02.aspx 中放什么。我更喜欢使用 php 来检查数据库,但我无法弄清楚!
任何帮助,将不胜感激!
先感谢您。
米什卡
- 更新 -
客户端的一些变化:
<script>
function validate(form, cb) {
$.getJSON('PHP/fb_check_user.php?username=' + form.username,
function(data){
$.each(data,function(name,error){
if (error === 'true')
{
cb({username: 'That username is taken'});
}
else
{
cb();
}
});
}
);
};
</script>
为了让它工作,我不得不改变这一行:
$.getJSON('PHP/fb_check_user.php?username=' + form.username + '?callback=?',
至:
$.getJSON('PHP/fb_check_user.php?username=' + form.username,
服务器端:(fb_check_user.php)
<?php
//Connect to database
$user=$_GET['username'];
$query = mysql_query("SELECT usr FROM members WHERE usr = '$user'");
if (!mysql_num_rows($query))
{
$result = array('error' => 'false');
}
else
{
$result = array('error' => 'true');
}
echo json_encode($result);
?>