2011-12-12 16 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> 

Esto es lo que tengo hasta ahora, aunque no funciona, creo que necesito usar ajax o algo así, pero no tengo idea de qué hacer.¿Cómo se puede usar php en una función de Javascript

Gracias

+1

En pocas palabras, no se puede utilizar PHP en una función de JavaScript. Sin embargo, puede generar código Javascript con PHP – konsolenfreddy

Respuesta

22

no se puede ejecutar código PHP con Javascript. Cuando el usuario recibe la página, el servidor evaluará y ejecutará todo el código PHP, y lo sacará. Así, por ejemplo, esto va a funcionar:

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

Debido a que el servidor se han evaluado a esto:

alert("Hello"); 

Sin embargo, no se puede realizar ninguna operación en PHP con él.

Este:

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

simplemente habrá sido evaluado a esto:

function Inc() 
{ 
    2 
} 

Si quieres probar a llamar a un script PHP, tendrá que llamar a una página diferente que devuelve un valor de un conjunto de parámetros.

Esto, por ejemplo, va a funcionar:

script.php

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

Javascript (jQuery) (en otra página):

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

Esto debería alertar 10.

¡Buena suerte!

Editar: Simplemente incrementando un número en la página se puede hacer fácilmente en jQuery así: http://jsfiddle.net/puVPc/

1

En el anterior código dado

asignar el valor php a javascript variable.

<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 en combinación de PHP y Javsacript es que no puede asignar el valor de javascript al valor de PHP. Puede asignar el valor PHP a la variable javascript.

+0

'eval (numérico)'? No creo que eso pertenezca allí. 'numérico ++ 'debería ser suficiente. – Dan

0

Pruebe esto puede funcionar ..

<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

Creo que estás confundiendo el código del servidor con código de cliente.

JavaScript se ejecuta en el cliente después de haber recibido datos del servidor (como una página web).

PHP se ejecuta en el servidor antes de enviar los datos.

De modo que hay dos formas de interactuar con JavaScript con php.

Como anteriormente, puede generar javascript con php de la misma manera que genera HTML con php.

O puede utilizar una solicitud AJAX de javascript para interactuar con el servidor. El servidor puede responder con datos y el javascript puede recibir eso y hacer algo con él.

Recomiendo volver a lo básico y estudiar cómo funciona HTTP en la relación servidor-cliente. Luego, estudie el concepto de idiomas del lado del servidor y lenguajes del lado del cliente.

Luego, tome un tutorial con ajax, y comenzará a obtener el concepto.

Buena suerte, google es tu amigo.

0

a pesar de algunos comentarios, en algunos casos es realmente necesario acceder a las funciones de PHP en Javascript (por ejemplo, los casos de AJAX).

En estos casos, puede usar la biblioteca mwsX para usar sus funciones de PHP en Javascript.

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

1

Hay una manera de ejecutar PHP en JavaScript del lado del cliente (no estamos hablando de los js del lado del servidor aquí). No sé si esta es una muy buena idea, pero puedes. Como señalaron algunas personas, debes tener en cuenta que el php se evalúa en el servidor y luego se devuelve como material estático al navegador, quien luego ejecutará el javascript con los datos agregados del servidor.

Tienes que decirle al servidor para evaluar los archivos js como archivos php, si está ejecutando un servidor Apache se puede hacer esto con un htaccess archivo de la siguiente manera:

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

Más información aquí:

Parse js/css as a PHP file using htaccess

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

Editar: A consultar la página http este truco hace que los archivos con extensio js n ser analizado por el compilador php. Todas las partes php en el archivo js se ejecutarán y el archivo js con los datos de servidor agregados se entregará al navegador.

Sin embargo, el OP utiliza un archivo formateado html (probablemente con extensión php), no hay archivo js, ​​por lo que en este caso específico no hay necesidad de mi sugerencia.

Las soluciones js sugeridas son el camino a seguir. Si la variable necesita ser almacenada en el servidor, use ajax para enviarla allí.

2

utiliza la escritura 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>'; 
?> 
+0

funciona en mi código, pero no creo que sea elegante. – Julian

2

Simplemente, su pregunta sonaba mal porque las variables JavaScript necesitan tener 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

lo vuelve simplemente:

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