2011-12-12 3 views
17
<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> 

Questo è quello che ho finora, non funziona però, penso di dover usare ajax o qualcosa del genere ma non ho idea di cosa fare.Come si può usare php in una funzione javascript

Grazie

+1

Semplicemente parlando, non è possibile utilizzare PHP in una funzione javascript. Tuttavia, è possibile generare codice Javascript con PHP – konsolenfreddy

risposta

22

Non è possibile eseguire codice PHP con Javascript. Quando l'utente riceve la pagina, il server avrà valutato ed eseguito tutto il codice PHP e l'avrà estratto. Così, per esempio, questo funzionerà:

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

Perché server che hanno valutato a questo:

alert("Hello"); 

Tuttavia, non è possibile eseguire operazioni in PHP con esso.

questo:

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

sarà semplicemente sono state valutate a questo:

function Inc() 
{ 
    2 
} 

Se wan't di chiamare uno script PHP, dovrete chiamare una pagina diversa che restituisce un valore da una serie di parametri.

Questo, per esempio, funzionerà:

script.php

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

Javascript (jQuery) (in un'altra pagina):

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

Questo dovrebbe allertare 10.

Buona fortuna!

Edit: appena incrementare un numero sulla pagina può essere fatto facilmente in jQuery come questo: http://jsfiddle.net/puVPc/

1

In data codice di cui sopra

assegnare il valore di php per javascript variabile.

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

Una cosa in combinazione di PHP e Javsacript è non è possibile assegnare javascript valore al valore di PHP. Puoi assegnare il valore PHP alla variabile javascript.

+0

'eval (numerico)'? Non credo che ci appartenga. 'numeriC++' dovrebbe essere sufficiente. – Dan

0

Prova questo può funzionare ..

<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> 
5

Credo che tu stia confondendo il codice server con codice client.

JavaScript viene eseguito sul client dopo che ha ricevuto i dati dal server (come una pagina Web).

PHP viene eseguito sul server prima di inviare i dati.

Quindi ci sono due modi per interagire con JavaScript con php.

Come sopra, è possibile generare javascript con php nello stesso modo in cui si genera HTML con php.

Oppure è possibile utilizzare una richiesta AJAX da javascript per interagire con il server. Il server può rispondere con i dati e il javascript può riceverlo e fare qualcosa con esso.

Si consiglia di tornare alle nozioni di base e studiare come funziona HTTP nella relazione server-client. Quindi studia il concetto di lingue lato server e lingue lato client.

Quindi fai un tutorial con ajax e inizierai a prendere il concetto.

Buona fortuna, Google è tuo amico.

0

nonostante alcuni commenti, in alcuni casi è veramente necessario accedere alle funzioni PHP in Javascript (ad esempio i casi AJAX).

In questi casi è possibile utilizzare la libreria mwsX per utilizzare le funzioni PHP su Javascript.

mwsX libreria: https://github.com/loureirorg/mwsx

1

C'è un modo per eseguire php in JavaScript lato client (non parliamo di js lato server qui). Non so se questa è una buona idea, ma puoi farlo. Come alcuni hanno sottolineato, bisogna tenere a mente che il php viene valutato sul server e quindi restituito come materiale statico al browser che eseguirà quindi javascript con i dati aggiunti dal server.

Devi dire al server di valutare i file js come file php, se si esegue un server Apache si può fare questo con un htaccess file in questo modo:

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

Maggiori informazioni qui:

Parse js/css as a PHP file using htaccess

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

Edit: Su richiesta di pagina http questo trucco rende i file con Extensio js n essere analizzato dal compilatore php. Tutte le parti di PHP nel file js verranno eseguite e il file js con i dati del server aggiunti sarà consegnato al browser.

Tuttavia, l'OP utilizza un file formattato html (probabilmente con estensione php), nessun file js, quindi in questo caso specifico non è necessario il mio suggerimento.

Le soluzioni js suggerite sono la strada da percorrere. Se la variabile deve essere memorizzata sul server, utilizzare ajax per inviarlo lì.

2

si utilizza lo script in 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>'; 
?> 
+0

funziona sul mio codice, ma non penso che sia elegante. – Julian

2

Semplicemente, la sua domanda suonava sbagliato, perché le variabili JavaScript devono essere eco.

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

-2

semplicemente lo restituisce:

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