2016-04-08 3 views
4

У меня есть функция AJAX, которая отправляет информацию в userpro_ajax_url после успешного входа в систему через Facebook.Вызов do_action с помощью JavaScript/jQuery

Я пытаюсь получить блок успеха запустить 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

lol не видел, что приходящий исполняющий php от js – madalinivascu

+0

Я никогда не думал, что мне тоже нужно будет это сделать :) – Yohio

ответ

1

Измените функцию PHP userpro_fbconnect вызвать код там или создать другой Ajax запрос после того, как это делается один

+0

Спасибо Мадалин, я могу передать триггер в эту конечную точку, однако, если этот плагин когда-либо обновляется это нарушит эту функциональность. – Yohio

+0

затем выполните еще один запрос ajax – madalinivascu

+0

Да, это то, что я сейчас делаю сейчас, думаю, что это должно сработать нормально :) как только он сработает, я приму этот ответ. – Yohio

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()

Надеюсь, это поможет устранить вашу проблему.

+0

Спасибо Muhammad, вы получили суть этого, и я использую php до JS, аналогично тому, что вы указали, однако я не могу вытащить информацию электронной почты со стороны php, так как она возвращается от FB через вызов API. – Yohio

+0

@Yohio Добро пожаловать, и принимайте ответ, если он работает с вами! –

+0

Я не понимаю вашего ответа – madalinivascu