2014-08-30 5 views
0

Ok, voici l'idée de base. Je veux avoir un javascript activer un autre. Cela semble être une idée assez simple. J'ai mon premier fichier js définir une variable à 1, et mon deuxième fichier js commence avec une instruction if où si cette variable est égale à 1, il se déclenche. Malheureusement je ne peux pas pour la vie de moi comprendre comment créer une variable JS qui peut être lue et modifiée par les deux fichiers. Dans un post précédent sur le site d'échange de la pile wordpress, j'ai lu que vous pouvez le faire en déclarant une variable dans wp_head. Malheureusement, alors que le fichier functions.php fonctionne bien, je n'arrive pas à accéder à la variable que j'ai créée. J'ai essayé wp_head.variable, qui n'est pas défini. J'ai essayé juste le nom de la variable, qui n'est pas défini. J'ai essayé de le définir, mais cela crée simplement une version locale de cette variable.Appeler une fonction javascript avec une autre

S'il y a un moyen plus facile de déclencher le deuxième script en réponse à la première s'il vous plaît faites le moi savoir. Ils doivent être dans des fichiers différents car chaque fichier nécessite une variable php différente localisée. Et oui, les actions du premier script tirent correctement.

functions.php Snippet:

function my_js_variables(){ ?> 
<script type="text/javascript"> 
var activate = 0; 
</script> 
<?php 
} 

add_action ('wp_head', 'my_js_variables'); 

premier script:

jQuery('#grab').click(function() 
{ 
    jQuery.ajax({ 
     url: my_ajax_script.ajaxurl, 
     data: ({action : 'get_my_option'}), 
     datatype: "json", 
     success: function(json){ 
     activate = 1; 
     } 
     }) 
     }) 

second script:

if (activate == 1) 
{ 
     alert('so far so good'); 
}; 
+1

Vous devez déclarer la variable * * en dehors de la fonction. – Pointy

+0

Ou placez-le sur 'window' -' window.activate = 1'. Notez que l'utilisation de globals pour la synchronisation, alors qu'une nécessité est parfois problématique et peut créer des problèmes de maintenance. –

+0

Si c'est javascript alors sa solution simple 'global variables', si c'est entre .php essayez de le mettre dans' session' – Khaleel

Répondre

0

je partirais avec l'approche du déclenchement et la liaison à un événement :

premier script

jQuery('#grab').click(function() 
{ 
    jQuery.ajax({ 
     url: my_ajax_script.ajaxurl, 
     data: ({action : 'get_my_option'}), 
     datatype: "json", 
     success: function(json){ 
     $(document).trigger('custom_event'); 
     } 
    }) 
}) 

Deuxième scénario

$(document).bind('custom_event', function() { 
    alert('so far so good'); 
} 
Questions connexes