0

我正在使用 jQuery Mobile。
我的移动到detailsdiv的代码::

<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" }
     );
}

身份验证后,我得到了有效的用户响应。
现在我想导航到那个detailsdiv

那么,成功登录后如何实现该ajax代码?
任何建议将不胜感激。

谢谢。

4

2 回答 2

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;
}
于 2013-04-05T06:36:43.883 回答
0

使用 $.ajax() 调用 Facebook API 进行身份验证,并在 ajax 函数的回调函数中调用详情链接的点击事件。

也许是这样的,

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

ajax调用成功时会调用success函数。

于 2013-04-05T06:36:42.887 回答