Предварительная регистрация на Facebook, проблема с асинхронной проверкой - PullRequest
0 голосов
/ 25 мая 2011

Я создал страницу регистрации в Facebook на своем сайте. У меня есть этот код:

<div id="fb-root"></div>
        <script src="http://connect.facebook.net/en_US/all.js#appId=123456789&xfbml=1"></script>
        <fb:registration redirect-uri="http://localhost/landing/page/" 
        fields="[
            {'name':'name'},
            {'name':'first_name'}, {'name':'last_name'},
            {'name':'birthday'},
            {'name':'gender'},
            {'name':'location'},
            {'name':'email'},
            {'name':'user_name', 'description':'new username', 'type':'text'}
        ]"
        onvalidate="validate_async"></fb:registration>

считают, что facebook appId и redirect-uri верны. и затем:

<script> 
function validate_async(form, cb) { 
    $.getJSON('http://graph.facebook.com/' + form.user_name + '?callback=?',
    function(response) {
      if (response.error) {
        // Username isn't taken, let the form submit
        cb();
      }
      cb({user_name: 'That username is taken'});
  });
}
</script>

Я хочу проверить асинхронное имя пользователя, на самом деле все нормально. но когда я пытаюсь проверить, существует ли "user_name" в моей базе данных, что-то происходит.

Я изменяю эту строку

$.getJSON('http://graph.facebook.com/' + form.user_name + '?callback=?',

в

$.getJSON('http://localhost/landing/page/fb_user/' + form.user_name + '?callback=?',

Я хочу знать, каков правильный формат данных json, передаваемых в качестве ответа ajax, чтобы мои данные могли быть правильно проверены. или, может быть, я получил ошибку в своем коде?

и для моего 'http://localhost/landing/page/fb_user/' я делаю что-то вроде этого:

    $user_name = $_GET('user_name');

    $data = array();

    $q = "SELECT * FROM 'table' WHERE user_name='$user_name'";
    //consider above lines are correct to shorten the code

            if($q->num_rows()) { //if user_name exist in database
                $r = $q->row();
                $data['user_name'] = $r->user_name;
            } else {
                $data['error'] = "true";
            }
    echo json_encode($data);

пока что я получил эту ошибку из консоли firebug

invalid label
{"user_name":"mdennisa"}

или

invalid label
{"error":"true"}

Мое ожидаемое решение должно быть уведомлением о проверке, если пользователь существует, он будет отображать «это имя пользователя занято», а если пользователь не существует, он ничего не будет отображать.

примечание: я использую jquery 1.5.2, ссылка: http://developers.facebook.com/docs/plugins/registration/advanced/

1 Ответ

1 голос
/ 13 июня 2011

Здесь этот вопрос решен, пожалуйста, проверьте эту ссылку

Плагин регистрации Facebook Async Validation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...