使用javascript函数调用Ajax方法

时间:2013-04-05 06:12:31

标签: javascript ajax html

我正在使用jQuery Mobile。
我的代码移至 details div ::

<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代码?
任何建议将不胜感激。

感谢。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

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

也许是这样的,

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

当ajax调用成功时,将调用success函数。