我正在使用基于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.write 有关... 我改成了:
$(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的按钮......
可能是因为我在父页面上加载了facebook的所有脚本吗?
<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'));
});
我现在缺少什么来正确渲染按钮?
答案 0 :(得分: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 Framework。
现在它在AJAX调用= D后很好地呈现按钮。