0

まず、私はどこでも答えを探しましたが、答えに出くわしたことがないので、どこかで何かを逃した場合は許してください!

Facebook登録フォームを送信する前に、ユーザー名が存在するかどうかを確認しようとしています。また、検証が完了していなくても登録を継続できるようです!すべての検証が完了する前にフォームの送信を停止する方法はありますか?

多くの回答がこれを明らかに解決する投稿にリンクしていますが、実際に重要な部分が欠落しています。この回答の投稿はこちらです。

「Test02.aspx」の内容が欠落しているため、行き詰まっています。


Facebookの部分:

<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を返す(またはreturnステートメントがまったくない)–次に、コールバック関数でサーバー側のスクリプトの応答を評価します。

それをどのように行うかはあなた次第です。

サーバーサイドスクリプトがJSONを返し、問題が発生した場合にエラー値を返す場合に最適です。次に、クライアント側のコールバック関数でそのJSONデータオブジェクトを評価します。

于 2012-10-05T11:59:58.433 に答える