0

首先,我到处寻找答案,但没有找到答案,如果我在某个地方遗漏了什么,请原谅我!

我正在尝试在提交 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);
?>
4

1 回答 1

0

首先,请查看文档进行异步验证,https://developers.facebook.com/docs/plugins/registration/advanced/#async

基本上,您的客户端验证函数返回 null(或根本没有返回语句)——然后您在回调函数中评估服务器端脚本的响应。

你如何做到这一点,取决于你。

最好的方法是,如果您的服务器端脚本返回 JSON,并在出现问题时给出错误值。然后您在客户端回调函数中评估该 JSON 数据对象。

于 2012-10-05T11:59:58.433 回答