2011-10-31 47 views
0

我正在做一個基於AJAX的Facebook登錄系統,並且我遇到了一個小問題...在Ajax的加載頁面中訪問導入的Facebook腳本

我有一個Facebook登錄頁面首次通過PHP導入的按鈕,然後在有人點擊按鈕時通過AJAX調用,如果登錄成功則更改內容,如果不成功則顯示相同的表單。

<form method="post" id="regist_form" enctype="application/x-www-form-urlencoded" action="asd.php"> 
<table> 
<tr> 
    <?php echo $this->form->username; ?> 
</tr> 
<tr> 
    <?php echo $this->form->password; ?> 
</tr> 
<tr> 
<td><br/><script type="text/javascript"> 
    document.write('<div class="fb-login-button" id="face_login" onlogin="loginAsFacebook()" scope="email,user_activities,publish_stream">Facebook</div>'); 
</script> 
</td> 
<td><br/> 
    <?php echo $this->form->login_form_csrf.$this->form->login_user; ?> 
</td> 
</tr> 
</table> 
</form> 

的問題是,當我通過AJAX調用這個表單頁面,該頁面以某種方式刷新,並且在中間中斷。然而,當它通過PHP加載,它加載OK ......

我想,如果沒有Facebook的登錄按鈕,它的工作原理確定太...

一些嘗試後,我發現這個問題是有關文件撰寫 ... 我把它改爲:

$(document).ready(function(){ 
    $('#face_gen').append('<div class="fb-login-button" class="face_login" onlogin="loginAsFacebook()" scope="email,user_activities,publish_stream">Facebook</div>'); 
    FB.XFBML.parse(document.getElementById('face_login')); 
}); 

現在,它通過AJAX,但沒有Facebook的按鈕的渲染加載好了......

難道是因爲我對f acebook的所有腳本加載在父頁面上?

<script src="//connect.facebook.net/en_US/all.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    FB.init({ 
     appId  : 'xxxxxxxxxxxxxxx', // App ID 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     oauth  : true, // enable OAuth 2.0 
     xfbml  : true, // parse XFBML 
     fbml5  : true 
    }); 
</script> 

我試圖用這個,但它並沒有太多的工作:

$("#user_reg_login").load("logincontent/logincontent/",function(){ 
    FB.XFBML.parse(document.getElementById('face_login')); 
}); 

什麼我現在缺少正確顯示按鈕?

回答

1

好吧,我發現如何把它的工作。

這裏的解決方案:

<form method="post" id="regist_form" enctype="application/x-www-form-urlencoded" action=""> 
<table> 
    <tr> 
     <?php echo $this->form->username; ?> 
    </tr> 
    <tr> 
     <?php echo $this->form->password; ?> 
    </tr> 
    <tr> 
     <td id="face_gen"><br/><script type="text/javascript"> 
      $(document).ready(function(){ 
       $('#face_gen').append('<div class="fb-login-button" class="face_login" onlogin="loginAsFacebook()" scope="email,user_activities,publish_stream">Facebook</div>'); 
       FB.XFBML.parse(document.getElementById('face_login')); 
      }); 
     </script> 

     </td> 
     <td><br/> 
      <?php echo $this->form->login_form_csrf.$this->form->login_user; ?> 
     </td> 
    </tr> 
</table> 
</form> 

我忘了說,我使用Zend框架。

現在它在AJAX調用= D之後很好地呈現按鈕。