2013-04-09 94 views
0

我跑我的网站上一个特殊的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查询运行不正常(我甚至试图重新创建它几次)。任何帮助将非常感激。

谢谢

+0

jQuery代码看起来像它应该工作,如果它工作时,你的PHP只是一个回音0语句,那么也许你返回不仅仅是一个1或0以上你的PHP。你看看你的PHP脚本返回什么? – John 2013-04-09 22:37:35

+0

不幸的是,我不知道如何直接吐出来自ajax的输出(总是需要打印某些东西并得到结果)。然而,我知道你所描述的不是问题,因为我已经尝试了从上面的确切的PHP代码,并将其设置为其他回声0(所以在这两种情况下,它应该回显0),仍然该函数将执行,如果0没有被退回。这对我来说很奇怪,我想知道它是否与facebook元素有关 – cschippe 2013-04-09 23:14:28

+0

我不能肯定地说不知道你的PHP文件真的返回。 我刚刚用Facebook JS SDK实现了你的代码,它工作得很好。我想知道你的PHP是否显示警告或错误。尝试注释掉DB代码并返回0或1. – John 2013-04-10 00:29:11

回答

0

我使用你的代码实现它,它工作得很好。
这里的一切期待的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> 
+0

所以有点奇怪,它开始工作,虽然我从来没有想出问题是什么......也许事情得到缓存? (这是真的没有意义,因为对页面的可见更新显示...) – cschippe 2013-04-11 13:52:03

+0

很高兴你得到它的工作:-D – John 2013-04-12 01:40:09

+0

@约翰:你能告诉我在哪一行jquery调用正在发生?我只是想通过使用facebool按钮'

'来运行你的代码,然后重新加载页面两次! – user123 2013-07-24 06:54:07

相关问题