Tengo una función AJAX que envía información a userpro_ajax_url después de iniciar sesión con éxito a través de Facebook.
Estoy tratando de obtener el bloque de éxito para ejecutar una función do_action usando
<?php ob_start(); do_action('userpro_social_login', <email needs to go here>); ob_clean(); ?>En este momento, si paso la dirección de correo electrónico manualmente, funciona bien, sin embargo, la única forma en que puedo obtener el correo electrónico de forma dinámica es a través de la respuesta actual que está en JavaScript.
La función completa es:
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.'); } }); });Intenté ejecutar la acción php usando:
jQuery(document).trigger('userpro_social_login', response.email);Ninguno de estos funciona ... ¿qué estoy haciendo mal?
Modifique su función php userpro_fbconnect active el código allí o cree otra solicitud ajax después de que esta haya terminado
No puede ejecutar código PHP desde su JS y viceversa. Pero lo siguiente puede ayudarte:
<?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> Y si desea ejecutar un método desde su JS , y ese método está definido usando PHP , y en el ámbito global, simplemente llámelo desde JS my_global_method()
Espero que eso ayude a solucionar tu problema.