2009-07-22 21 views
11

Soy nuevo en PHP. Necesito dar salida al siguiente JavaScript con PHP. Este es mi código:Cómo generar JavaScript con PHP

<html> 
<body> 
<?php 

echo "<script type="text/javascript">"; 
echo "document.write("Hello World!")"; 
echo "</script>"; 

?> 
</body> 
</html> 

Pero se está mostrando el error:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /var/www/html/workbench/person/script.php on line 4

Puede alguien por favor ayuda? También necesito algunos tutoriales simples sobre cómo usar PHP, HTML y JavaScript para una aplicación.

+1

Oh, bueno, alguien "mejoró" el código original en la pregunta editando ... Ahora mi respuesta parece volcada. : P – Malax

Respuesta

44

Debería escapar de los delimitadores de cadena de JavaScript dentro de la cadena de PHP. Está utilizando comillas dobles para las cadenas de PHP y JavaScript. Trate de esta forma:

<html> 
<body> 
<?php 

// Here, we use single quotes for PHP and double quotes for JavaScript 
echo '<script type="text/javascript">'; 
echo 'document.write("Hello World!")'; 
echo '</script>'; 

?> 
</body> 
</html> 

Tienes que escapar cotizaciones en JavaScript y PHP cuando el delimitador de cadena son las mismas que las comillas:

echo "\""; // escape is done using a backslash 
echo '\''; 

mismo en JavaScript:

alert("\""); // escape is done using a backslash 
alert(echo '\''); 

Pero como es muy difícil leer una cadena con tales secuencias de escape, es mejor combinar una sola con comillas dobles, según sea necesario:

echo '"'; 
echo "'"; 
+6

¡momento de dar una respuesta correcta! votar. Vamos @krishna, esto es digno. Estos chicos se tomaron un tiempo para ti. Creo que 3 años son lo suficientemente largos como para que funcione este. – 3Dom

+2

¿Puedo sugerir un cambio de '// PHP utiliza comillas simples, JavaScript usa comillas dobles' para' // Aquí, utilizamos comillas simples para PHP y comillas dobles para JavaScript'? De esta forma, es más claro que esas no son reglas sobre PHP y JavaScript. – Jasper

+2

@Jasper tiene razón. He usado tu fraseo. ¡Gracias! –

-2
<?php 

echo '<script type="text/javascript">document.write(\'Hello world\');</script>'; 
?> 
1

tiene que escapar de las comillas dobles como esto:

echo "<script type=\"text/javascript\">"; 
echo "document.write(\"Hello World!\")"; 
echo "</script>"; 

o utilizar comillas simples dentro de comillas dobles en lugar, de esta manera:

echo "<script type='text/javascript'>"; 
echo "document.write('Hello World!')"; 
echo "</script>"; 

o al revés , como este:

echo '<script type="text/javascript">'; 
echo 'document.write("Hello World!")'; 
echo '</script>'; 

Además, ingrese al PHP Manual para obtener más información sobre cadenas.

Además, ¿por qué quieres imprimir JavaScript usando PHP? Siento que hay algo mal con tu diseño.

1

Necesita escapar de sus presupuestos.

Usted puede hacer esto:

echo "<script type=\"text/javascript\">"; 

o esto:

echo "<script type='text/javascript'>"; 

o esto:

echo '<script type="text/javascript">'; 

O simplemente permanecer fuera de php

<script type="text/javascript"> 
7

Otra opción es hacerlo de esta manera:

<html> 
    <body> 
    <?php 
    ...php code... 
    ?> 
    <script type="text/javascript"> 
     document.write("Hello World!"); 
    </script> 
    <?php 
    ....php code... 
    ?> 
    </body> 
</html> 

y si desea utilizar php dentro de su JavaScript, realice la siguiente manera:

<html> 
    <body> 
    <?php 
     $text = "Hello World!; 
    ?> 
    <script type="text/javascript"> 
     document.write("<?php echo $text ?>"); 
    </script> 
    <?php 
    ....php code... 
    ?> 
    </body> 
</html> 

Esperamos que esto pueda ayudar.

+0

+1: esta es una buena práctica ya que hace que el HTML sea fácil de editar y aclarar dónde se produce la delineación entre PHP y HTML. – BryanH

5

Una forma más fácil es utilizar la sintaxis heredoc de PHP. Un ejemplo:

<?php 

echo <<<EOF 
<script type="text/javascript"> 
    document.write("Hello World!"); 
</script> 
EOF; 

?> 
31

El error que se obtiene si porque es necesario para escapar de las cotizaciones (al igual que otras respuestas dijo).

Para evitar esto, se puede utilizar una sintaxis alternativa para usted cuerdas declaraciones, llamado "Heredoc"

Con esta sintaxis, se puede declarar una cadena larga, aun que contiene comillas simples y/o dobles comillas, sin tener que escapar de esos; hará que su código JavaScript sea más fácil de escribir, modificar y comprender, lo que siempre es bueno.

A modo de ejemplo, el código podría llegar a ser:

$str = <<<MY_MARKER 
<script type="text/javascript"> 
    document.write("Hello World!"); 
</script> 
MY_MARKER; 

echo $str; 

Tenga en cuenta que con la sintaxis Heredoc (como con cadena delimitada por comillas dobles), las variables son interpolados.

+2

+1 para usar HEREDOC, que es una forma mucho mejor de manejar un bloque de código grande. –

+0

+1. De acuerdo, use un heredoc si está incluyendo bloques de código grande. –

1

La siguiente solución debería funcionar bastante bien para lo que estás tratando de hacer.

  1. El bloque de JavaScript se coloca muy tarde en el documento, de modo que no tiene que preocuparse por elementos no existentes.

  2. Está configurando una variable de PHP en la parte superior del script y dando como resultado el valor de la variable dentro del bloque de JavaScript.

    De esta manera, no tiene que preocuparse por las comillas dobles o HEREDOCS (que es el método recomendado si REALMENTE debe ir allí).

    Javascript incrustación Ejemplo

    <div id="helloContainer"><div> 
    
    <script type="text/javascript"> 
        document.getElementById('helloContainer').innerHTML = '<?= $greeting; ?>'; 
    </script> 
    

0

usted quiere hacer esto:

<html> 
<body> 
<?php 

print ' 
<script type="text/javascript"> 
document.write("Hello World!") 
</script> 
'; 

?> 
</body> 
</html> 
-3

Trate T su:

<html> 
<body> 
<?php 

echo "<script type="text/javascript">"; 
echo "document.write("Hello World!");"; 
echo "</script>"; 

?> 
</body> 
</html> 
+2

Esto no funciona por la misma razón que el código en la pregunta original (¿cambió siquiera algo en el código?) – Jasper

+1

@ Desarrollador No corrija los errores de programación editando. Más bien, deje un comentario para notificar al autor sobre las deficiencias de su respuesta. –

+0

ok genial. perdón por eso. Quería salvar a alguien de este código corrigiéndolo :( – Developer

0

lugar que fácilmente podría hacerlo de esta manera:

<html> 
<body> 
<script type="text/javascript"> 
<?php 
    $myVar = "hello"; 
?> 
    document.write("<?php echo $myVar ?>"); 
</script> 
</body> 
0

está usando el "en lugar de" Se está mezclando hasta sintaxis de PHP con Javascript. PHP va a imprimir javascript con la función echo, pero está tomando los códigos js como una sintaxis php incorrecta. así que intente esto,

<html> 
<body> 
<?php 

echo "<script type='text/javascript'>"; 
echo "document.write('Hello World!')"; 
echo "</script>"; 

?> 
</body> 
</html>