我正在使用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代码?
任何建议将不胜感激。
感谢。
答案 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函数。