2013-04-05 5 views
0

Я работаю с jQuery Mobile.
Мой код для перехода к details DIV ::Вызов метода Ajax с использованием функции javascript

<a href="#details" data-ajax="true" data-transition="pop" data-role="button" data-inline="false" data-icon="info">Go To Details</a> 

Теперь, я хочу, чтобы проверить подлинность пользователя с Facebook.

Так я применил ::

<a href="javascript:userLogin()" data-ajax="true" data-transition="pop" data-role="button" data-inline="false" data-icon="info"> Login with Faceook </a> 

Функция Вызов для проверки подлинности

function userLogin() { 
    FB.login(
      function(response) { 
       if (response.authResponse) { 
        alert('logged in'); 

        FB.api('/me', function(response) { 
        alert("Welcome " + response.name); 
        }); 
       } else { 
        alert('not logged in'); 
       } 
      }, 
      { scope: "email" } 
    ); 
} 

Я получаю правильный ответ пользователя после проверки подлинности.
Теперь я хочу перейти к этому details div.

Итак, как я могу реализовать этот код ajax после успешного входа?
Любое предложение будет оценено по достоинству.

Спасибо.

+0

Вы можете установить его как файлы cookie, а затем перенаправить на страницу сведений. –

+0

У вас есть jquery –

+0

, если у вас есть jquery try '$ ('a [href =" # details "]'). Click()' –

ответ

1

Вместо изменения атрибута href вы должны привязать событие onclick к функции, возвращающей true.

Изменить тэг a.

<a href="#details" onclick="javascript:return userLogin()" data-ajax="true" data-transition="pop" data-role="button" data-inline="false" data-icon="info">Go To Details</a> 

Измените userLogin функцию:

function userLogin() { 
    FB.login(
     function(response) { 
      if (response.authResponse) { 
       alert('logged in'); 

       FB.api('/me', function(response) { 
        alert("Welcome " + response.name); 
       }); 
      } else { 
       alert('not logged in'); 
      } 
     }, 
     { scope: "email" } 
    ); 
    return true; 
} 

Кажется, что FB.login является асинхронизированной операция. Если вы хотите перенаправить после действия входа в систему, попробуйте изменить значение location.hash после входа в систему. Обратите внимание, что возвращаемое значение изменилось на false.

function userLogin() { 
    var hash = '#details'; 
    FB.login(
     function(response) { 
      if (response.authResponse) { 
       alert('logged in'); 
       FB.api('/me', function(response) { 
        alert("Welcome " + response.name); 
        window.location.hash = hash; 
       }); 
      } else { 
       alert('not logged in'); 
      } 
     }, 
     { scope: "email" } 
    ); 
    return false; 
} 
+0

Не работает .. Он напрямую переходит к этому div без аутентифицированного пользователя. –

+0

@iManan обновленный ответ. –

0

Используйте $ .ajax() для вызова API Facebook для аутентификации и в функции обратного вызова функции ajax, вызовите событие click для ссылки на детали.

Может быть что-то вроде этого,

$.ajax({ 
    url : 'https://graph.facebook.com/me'+whatever, 
    success : function(){ 
     $('#details').click() 
    } 
    }); 

Функция успех будет вызываться, когда вызов Ajax успешно.

Смежные вопросы