Facebook Connect在成功登录后不处理jQuery ajax调用

Facebook Connect在成功登录后不处理jQuery ajax调用,facebook,facebook-graph-api,Facebook,Facebook Graph Api,我有以下脚本: <script> window.fbAsyncInit = function () { FB.init({ appId: '<%: Facebook.FacebookApplication.Current.AppId %>', status: true, cookie: true, xfbml: true,

我有以下脚本:

    <script>
        window.fbAsyncInit = function () {
            FB.init({ appId: '<%: Facebook.FacebookApplication.Current.AppId %>',
                status: true,
                cookie: true,
                xfbml: true,
                oauth: true
            });

            function FBLogin() {
                FB.login(function (response) {
                    if (response.authResponse) {                            
                        ConnectFacebookUser(response.authResponse.accessToken);
                    } else {
                        alert('User cancelled login or did not fully authorize.');
                    }
                }, { scope: 'email' });
            }

            $('#fb-button').live('click', function (e) {
                FBLogin();

                e.preventDefault();
            });

            function ConnectFacebookUser(at) {
                var postdata = "at=" + at;
                alert('This is the access token : ' + at);

                $.ajax({
                    type: "POST",
                    dataType: "json", // what data type to expect from the server
                    url: "/FBConnect.ashx",
                    data: postdata,
                    success: function (data) {
                        // do nothing
                        alert('all good');
                    },
                    error: function (xhr, status, error) {
                        alert('error occured in FBConnect.ashx');
                    }
                });

                alert('finished');
            }
        };

        (function () {
            var e = document.createElement('script'); e.async = true;
            e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
            document.getElementById('fb-root').appendChild(e);
        } ());

    </script>

window.fbAsyninit=函数(){
FB.init({appId:''),
状态:正确,
曲奇:是的,
xfbml:是的,
真的吗
});
函数FBLogin(){
FB.登录(功能(响应){
if(response.authResponse){
ConnectFacebookUser(response.authResponse.accessToken);
}否则{
警报('用户已取消登录或未完全授权');
}
},{范围:'电子邮件'});
}
$(“#fb按钮”).live('click',函数(e){
FBLogin();
e、 预防默认值();
});
函数ConnectFacebookUser(at){
var postdata=“at=”+at;
警报('这是访问令牌:'+at);
$.ajax({
类型:“POST”,
dataType:“json”,//希望从服务器获得什么样的数据类型
url:“/FBConnect.ashx”,
数据:postdata,
成功:功能(数据){
//无所事事
警惕(“一切正常”);
},
错误:函数(xhr、状态、错误){
警报(“FBConnect.ashx中发生错误”);
}
});
警报(“完成”);
}
};
(功能(){
var e=document.createElement('script');e.async=true;
e、 src=document.location.protocol+'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
} ());
对于html片段:

    <a href="#" id="fb-button">Login with facebook</a>
    <div id="fb-root"></div>

当点击链接时,会出现一个facebook弹出窗口,当我输入我的登录详细信息时,我只看到一个警告,上面写着“这是访问令牌…”,但其余代码不会被处理。如果我再次点击“使用facebook登录”链接,那么一切都会正常处理


有什么问题吗?

请查看jQuery的具体实现方法。我注意到的一件事是,调用FB.login时的jqueryclick函数触发了我测试的一些浏览器中的弹出窗口阻止程序。我设置它是为了解决这个问题,但它也是一种添加回调的方法,可以在init序列期间正常运行。

它对我很有效。我收到消息“这是访问代码”,然后收到“已完成”警报。请检查您的Chrome调试器工具,以查找可能正在悄无声息地发生的任何脚本错误。

我没有遇到弹出窗口阻止程序的任何问题,但我将对此进行调查。我查看了您提供的链接,但这没有多大帮助,但还是感谢您的回答。在快速查看此链接后,可能与将其他函数调用嵌套在window.fbAsyninit函数中有关。因此,这可能是一个范围问题。以前没有这些函数,我做了太多的修改,试图让它工作,当我决定把它放在这里,我只是粘贴代码的原样。无论如何,即使将所有函数移到window.fbAsyninit函数之外,也不能解决问题。再次感谢你再次尝试。谢谢你的提醒。我丢失了一个js文件,该文件具有导致问题的ajaxStart函数。现在一切正常。