我有一个AJAX功能,可以在通过Facebook成功登录后向userpro_ajax_url
发送信息。
我正在尝试使用
运行do_action
函数获取成功块
<?php
ob_start();
do_action('userpro_social_login', <email needs to go here>);
ob_clean();
?>
现在,如果我手动传递电子邮件地址,它可以正常工作,但我可以动态获取电子邮件的唯一方法是通过JavaScript中的当前响应。
完整的功能是:
FB.api('/me?fields=name,email,first_name,last_name,gender', function(response) {
jQuery.ajax({
url: userpro_ajax_url,
data: "action=userpro_fbconnect&id="+response.id+"&username="+response.username+"&first_name="+response.first_name+"&last_name="+response.last_name+"&gender="+response.gender+"&email="+response.email+"&name="+response.name+"&link="+response.link+"&profilepicture="+encodeURIComponent(profilepicture)+"&redirect="+redirect,
dataType: 'JSON',
type: 'POST',
success:function(data){
userpro_end_load( form );
<?php
ob_start();
do_action('userpro_social_login', );
ob_clean();
?>
/* custom message */
if (data.custom_message){
form.parents('.userpro').find('.userpro-body').prepend( data.custom_message );
}
/* redirect after form */
if (data.redirect_uri){
if (data.redirect_uri =='refresh') {
//document.location.href=jQuery(location).attr('href');
} else {
//document.location.href=data.redirect_uri;
}
}
},
error: function(){
alert('Something wrong happened.');
}
});
});
我尝试使用:
运行php动作jQuery(document).trigger('userpro_social_login', response.email);
这些都不起作用......我做错了什么?
答案 0 :(得分:1)
修改你的php函数userpro_fbconnect
触发那里的代码,或者在完成后再创建另一个ajax请求
答案 1 :(得分:0)
您无法从PHP
执行JS
代码,反之亦然。但以下内容可能会对您有所帮助:
<?php
// Some php code goes here...
?>
<script>
// JS code...
ob_start();
do_action('userpro_social_login', <?php <email needs to go here> ?>);
ob_clean();
</script>
如果你想从JS
执行一个方法,并使用PHP
定义该方法,并将其传递到全局范围,那么只需从JS my_global_method()
<中调用它/ p>
我希望这有助于解决您的问题。