为什么在Facebook登录时不会运行这个ajax?
问题描述:
我跑我的网站上一个特殊的Facebook登录,其中,当使用点击它,必须执行以下操作:为什么在Facebook登录时不会运行这个ajax?
- 连接与FB
- 如果Facebook ID的用户数据已经认可,千万XXX
- 如果不承认Facebook的ID,做YYY
出于某种原因,我不能让AJAX查询,检查Facebook的ID才能正常工作。我已经花了几个小时在这个上面,但仍然没有运气(开始感觉像一个真正的时间片)...即使我设置查询只返回0(例如,更改第二个回声也是'回声0') ,它不会(除非我将整个函数简化为'echo 0')。任何想法为什么这可能会发生?下面的代码:
调用函数(使用var FBID的输入)AJAX查询:
<?php
// configuration
require("../html/includes/config.php");
// connect to server
$connect = mysql_connect(SERVER, USERNAME, PASSWORD);
$fbid = $_POST["fbid"];
$fbidcheck = query('SELECT * FROM usertable WHERE fbid = ?', $_POST["fbid"]);
if (isset($fbidcheck[0]["fbid"]))
echo 0;
else
echo 1;
?>
称为当有人点击登录按钮JS功能:
// FB login function
function fblogin() {
FB.login(function(response) {
if (response.authResponse) {
// Here, I want to test if the facebook ID is already in the table
var fbid = response.authResponse.userID;
$.post("check_fbid.php", {'fbid': fbid}, function(result)
{
if(result == 0)
{
// login in the user
// use fbid to call session, etc. for login
location.reload();
return true;
}
else
{
// open new box on page to let user register
openRegisterBox();
return false;
}
});
} else {
// Login was cancelled or failed
return false;
}
}, {scope: 'email'});
}
再次,我已经跟踪问题到ajax查询运行不正常(我甚至试图重新创建它几次)。任何帮助将非常感激。
谢谢
答
我使用你的代码实现它,它工作得很好。
这里的一切期待的PHP代码:
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
function fblogin() {
FB.login(function(response) {
if (response.authResponse) {
var fbid = response.authResponse.userID;
$.post("http://johnhiott.com/play/fbid.php", {'fbid': fbid}, function(result){
if(result == 0){
alert("in");
return true;
}else{
alert("no");
return false;
}
});
}else {
return false;
}
}, {scope: 'email'});
}
</script>
</head>
<body>
<div id="fb-root"></div>
<script>
// Additional JS functions here
window.fbAsyncInit = function() {
FB.init({
appId : '284563394889810', // App ID
channelUrl : '//WWW.JOHNHIOTT.COM/play/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
// Additional init code here
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>
</body>
<a href="#" onClick="fblogin()">hi</a>
</script>
</html>
jQuery代码看起来像它应该工作,如果它工作时,你的PHP只是一个回音0语句,那么也许你返回不仅仅是一个1或0以上你的PHP。你看看你的PHP脚本返回什么? – John 2013-04-09 22:37:35
不幸的是,我不知道如何直接吐出来自ajax的输出(总是需要打印某些东西并得到结果)。然而,我知道你所描述的不是问题,因为我已经尝试了从上面的确切的PHP代码,并将其设置为其他回声0(所以在这两种情况下,它应该回显0),仍然该函数将执行,如果0没有被退回。这对我来说很奇怪,我想知道它是否与facebook元素有关 – cschippe 2013-04-09 23:14:28
我不能肯定地说不知道你的PHP文件真的返回。 我刚刚用Facebook JS SDK实现了你的代码,它工作得很好。我想知道你的PHP是否显示警告或错误。尝试注释掉DB代码并返回0或1. – John 2013-04-10 00:29:11