web-dev-qa-db-fra.com

Comment pouvez-vous utiliser php dans une fonction javascript

<html>
    <?php
        $num = 1;
        echo $num;
    ?>
    <input type="button"
           name="lol" 
           value="Click to increment"
           onclick="Inc()" />
    <br>
    <script>
        function Inc()
        {
        <?php
            $num = 2;
            echo $num;
        ?>
        }
    </script>
</html>

C'est ce que j'ai jusqu'à présent, mais je ne travaille pas, je pense que je dois utiliser ajax ou quelque chose, mais je ne sais pas quoi faire.

Merci

20
fosho

Vous ne pouvez pas exécuter PHP code avec Javascript. Lorsque l'utilisateur reçoit la page, le serveur aura évalué et exécuté tout le code PHP, et l'a retiré) Ainsi, par exemple, cela fonctionnera:

alert( <?php echo "\"Hello\""; ?> );

Parce que le serveur l'aura évalué à ceci:

alert("Hello");

Cependant, vous ne pouvez effectuer aucune opération dans PHP avec lui.

Cette:

function Inc()
{
<?php
$num = 2;
echo $num;
?>
}

Sera simplement évalué à ceci:

function Inc()
{
    2
}

Si vous ne voulez pas appeler un script PHP, vous devrez appeler une page différente qui renvoie une valeur à partir d'un ensemble de paramètres.

Cela, par exemple, fonctionnera:

script.php

$num = $_POST["num"];
echo $num * 2;

Javascript (jQuery) (sur une autre page):

$.post('script.php', { num: 5 }, function(result) { 
   alert(result); 
});

Cela devrait alerter 10.

Bonne chance!

Edit: juste incrémenter un nombre sur la page peut être fait facilement dans jQuery comme ceci: http://jsfiddle.net/puVPc/

28
Andreas Eriksson

Je pense que vous confondez le code serveur avec le code client.

JavaScript s'exécute sur le client après avoir reçu des données du serveur (comme une page Web).

PHP s'exécute sur le serveur avant d'envoyer les données.

Il y a donc deux façons d'interagir avec JavaScript avec php.

Comme ci-dessus, vous pouvez générer du javascript avec php de la même manière que vous générez du HTML avec php.

Ou vous pouvez utiliser une demande AJAX de javascript pour interagir avec le serveur. Le serveur peut répondre avec des données et le javascript peut recevoir cela et faire quelque chose avec.

Je recommanderais de revenir aux bases et d'étudier le fonctionnement de HTTP dans la relation serveur-client. Ensuite, étudiez le concept des langages côté serveur et des langages côté client.

Suivez ensuite un tutoriel avec ajax, et vous commencerez à obtenir le concept.

Bonne chance, Google est ton ami.

5
Vigrond

Simplement, votre question sonnait faux parce que les variables JavaScript doivent être reprises en écho.

<?php
        $num = 1;
        echo $num;
        echo "<input type='button' value='Click' onclick='readmore()' />";
                echo "<script> function readmore() { document.write('";
        $num = 2;
        echo $num;
        echo "'); } </script>";
?>
2
MEX

vous utilisez un script en php ..

<?php

        $num = 1;
        echo $num;

    echo '<input type="button"
           name="lol" 
           value="Click to increment"
           onclick="Inc()" />
    <br>
    <script>
        function Inc()
        {';
            $num = 2;
            echo $num;

        echo '}
    </script>';
?>
2
dunno

Dans le code donné ci-dessus

attribuez la valeur php à la variable javascript.

<html>
<?php
 $num = 1;
 echo $num;
?>
  <input type = "button" name = "lol" value = "Click to increment" onclick = "Inc()">
  <br>
  <script>
   var numeric = <?php echo $num; ?>"; //assigns value of the $num to javascript var             numeric 
  function Inc()
   {
     numeric = eVal(numeric) + 1;
     alert("Increamented value: "+numeric);
   }
  </script>
</html>

Une chose en combinaison avec PHP et Javsacript est que vous ne pouvez pas attribuer de valeur javascript à PHP value. Vous pouvez affecter PHP valeur à la variable javascript.

1
Vid

Il existe un moyen d'exécuter php en javascript côté client (sans parler des js côté serveur ici). Je ne sais pas si c'est une très bonne idée, mais vous le pouvez. Comme certaines personnes l'ont souligné, vous devez garder à l'esprit que le php est évalué sur le serveur, puis renvoyé en tant que substance statique au navigateur qui exécutera ensuite le javascript avec les données ajoutées du serveur.

Vous devez dire au serveur d'évaluer les fichiers js en tant que fichiers php, si vous exécutez un serveur Apache, vous pouvez le faire avec un fichier htaccess comme ceci:

<FilesMatch "\.js$">
SetHandler application/x-httpd-php
Header set Content-type "application/javascript"
</FilesMatch>

Plus d'infos ici:

Analyser js/css comme un PHP utilisant htaccess

http://css-tricks.com/snippets/htaccess/use-php-inside-javascript/

Edit: Sur la demande de page http, cette astuce fait analyser les fichiers avec l'extension js par le compilateur php. Toutes les parties php du fichier js seront exécutées et le fichier js avec les données du serveur ajoutées sera remis au navigateur.

Cependant, l'OP utilise un fichier formaté html (probablement avec une extension php), pas de fichier js, donc dans ce cas spécifique, je n'ai pas besoin de ma suggestion.

Les solutions js suggérées sont la voie à suivre. Si la variable doit être stockée sur le serveur, utilisez ajax pour l’y envoyer.

1
metatron

Essayez cela peut fonctionner ..

<html>
   <?php $num = 1; ?>
   <div id="Count"><?php echo $num; ?></div>
   <input type = "button" name = "lol" value = "Click to increment" onclick = "Inc()">
   <br>
   <script>
   function Inc() {
       i = parseInt(document.getElementById('Count').innerHTML);
       document.getElementById('Count').innerHTML = i+1;
   }
   </script>
</html>
0
Jagadeesan

malgré certains commentaires, dans certains cas, il est vraiment nécessaire d'accéder à PHP fonctions à Javascript (par exemple les AJAX cas)).

Dans ces cas, vous pouvez utiliser la bibliothèque mwsX pour utiliser vos fonctions PHP chez Javascript.

bibliothèque mwsX: https://github.com/loureirorg/mwsx

0
Daniel Loureiro