TransWikia.com

Ejecutar codigo PHP dentro de Javascript

Stack Overflow en español Asked on November 13, 2021

Me podrían ayudar co un problema:

Deseo ejecutar código PHP dentro de Javascript.

<html>
<head></head>
<body>
    <script type="text/javascript">
        <?php echo "hola como estan"; ?>);
    </script>
</body>
</html>

La salida html:

<html>
<head></head>
<body>
    <script type="text/javascript">
        hola como estan <-- marcado en rojo en el inspector del navegador
    </script>
</body>
</html>

El error en la consola del navegador:

Uncaught SyntaxError: Unexpected identifier

5 Answers

En el código del script tú lo habías puesto como:

<script>
    <?php echo 'Hola mundo'; ?>
</script>

Ahí el problema, al poner echo haces que el navegador quite las etiquetas php y pone solo el hola mundo. Lo que tienes que hacer tendrías que mezclar código php con js. Por ejemplo: Si quieres hacer que salga un console.log tienes que hacer lo siguiente.

<script>
    console.log('<?php echo 'Hola mundo';?>');
</script>

Answered by Angel R.D on November 13, 2021

Actualmente yo mando así

    $.post("<?php echo URL ?>/enviarRevisionDocumental",

o dime mas sobre tu inquietud con gusto te ayudo.

Answered by antonx Abarca on November 13, 2021

Puedes usar type (nota el uso de type="php" en el script que contiene código php). El ejemplo es muy inseguro porque usa eval sin filtro, así que cuidado. (Básicamente es lo que usan bibliotecas como Babel):

<?php
if(isset($_POST['ev']) && $_POST['ev']=='1' && isset($_POST['que']) && !empty($_POST['que'])){
    eval($_POST['que']);
    exit;
}
?>
<!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>test</title>
        </head>
        <body>
        <script type="php">
        echo 'hola, hoy es '.date('d-m-Y');
        </script>
        <script>
        function request(url,callback,params){
            var H=new XMLHttpRequest();
            if(!H)return;
            var p='';
            for(var i in params){
                p+='&'+i+'='+encodeURIComponent(params[i]); 
            }
            var signo=url.indexOf('?')==-1 ? '?' :'&';
            H.open('post',url+signo+Math.random(),true);
            H.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            H.onreadystatechange=function(){
                if(H.readyState==4 && (H.status == 200 ||  H.status==0) ){
                    if(callback)callback(H.responseText);
                    H.onreadystatechange=function(){}
                    H.abort();
                    H=null;
                }
            }
            H.send(p);
        }
        var scs=[].slice.call(document.getElementsByTagName('script'));
        scs.forEach(
            function(sc){
                if(sc.type=='php'){
                    request(
                        '?',
                        function(r){
                            sc.parentNode.replaceChild(document.createTextNode(r),sc);
                        },
                        {'ev':'1','que':sc.text}
                    );
                }
            }
        );
        </script>
        </body>
    </html>

Answered by Andrés Ricardo Fernández on November 13, 2021

Creo que hay un error de concepto a la hora de estructurar la tarea que quieres hacer.

Realmente no se ejecuta PHP dentro de Javascript, sino que Javascript hará uso de lo que PHP imprima dentro de sus etiquetas o funciones. Dado que PHP es lenguaje de servidor, se ejecutará antes que Javascript.

Básico para que se entienda, el orden en el que se ejecutan:

PHP (servidor)
HTML (navegador)
Javascript (navegador)

Entonces el flujo iría de la siguiente forma:

1.- ¿Qué resultado queremos conseguir?

<html>
<head></head>
<body>
    <script>
       alert("hola como estan"); 
    </script>
</body>
</html>

2.- ¿Qué parte de ese resultado va a gestionar PHP?

hola como estan

3.- ¿Cómo imprime PHP este texto dentro de html?

<?php echo "hola como estan"; ?>

4.- ¿Cómo se pone todo en funcionamiento?

<html>
<head></head>
<body>
    <script>
       alert("<?php echo "hola como estan"; ?>");
       //    ^                                ^
       //   (1)                              (2)
    </script>
</body>
</html>

Ojo con la sintaxis, las comillas de Javascript hay que mantenerlas.

Un ejemplo sencillo:

<?php
// varios textos en un array
$txt = array(
    "Hola como estan",
    "Hola que tal va",
    "Hola ke ase XD",
);
// desordena el contenido del array
shuffle($txt);
?>

<html>
<head></head>
<body>
    <script>
       // cada vez que recarga el navegador
       // debería lanzar el texto de forma 
       // aleatoria
       alert("<?php echo $txt[0]; ?>"); 
    </script>
</body>
</html>

Answered by OscarR on November 13, 2021

Asi como lo tienes es un error de sintaxis. Si quieres escribir algo puedes usar la consola asi:

<?php echo "console.log('hola como estan');"

O tambien un alert asi:

<?php echo "alert('hola como estan');"

Answered by alanfcm on November 13, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP