2013-04-09 40 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

相關問題