2010-11-26 13 views

Antwort

70

Sie können nicht, werden Sie so etwas wie

<script type="text/javascript"> 
    var php_var = "<?php echo $php_var; ?>"; 
</script> 

Sie auch mit AJAX

laden

Nashorn ist das Richtige zu tun haben, fehlt der Schnipsel eines Typs aus Gründen der Kürze .

Beachten Sie auch, dass, wenn $php_var Anführungszeichen hat, wird es Ihr Skript zu brechen. Sie sollten addslashes, htmlentities oder eine benutzerdefinierte Funktion verwenden.

+1

rhino korrekt ist, json_encode die Variable entkommt. – Jonah

+2

W3C gibt an, dass 'das Typattribut für jede SCRIPT-Elementinstanz in einem Dokument angegeben werden muss. ' – stillstanding

+0

Richtig, wahrscheinlich hat er es aus Gründen der Kürze einfach weggelassen. – Jonah

35

Metrobalderas ist teilweise richtig. Teilweise, weil der Wert der PHP-Variablen einige Sonderzeichen enthalten kann, die Metazeichen in JavaScript sind. Um ein solches Problem zu vermeiden, verwenden Sie den Code unten:

<script type="text/javascript"> 
var something=<?php echo json_encode($a); ?>; 
</script> 
+5

+1. Getestet, und json_encode _does_ quotiert und entkoppelt Zeichenfolgen richtig. – Jonah

0

Ich bin nicht sicher, wie notwendig dies ist, und es fügt einen Aufruf an getElementById, aber wenn Sie wirklich daran interessiert, auf immer inline JavaScript aus Ihrem Code , können Sie es als HTML-Attribut übergeben, und zwar:

<span class="metadata" id="metadata-size-of-widget" title="<?php echo json_encode($size_of_widget) ?>"></span> 

Und dann in Ihrem JavaScript:

var size_of_widget = document.getElementById("metadata-size-of-widget").title;