使用PHP变量的JavaScript警报的正确格式是什么?


What is the correct format to PHP echo a JavaScript Alert which uses PHP variables?

我用

<?php     
$myArr =  "foo" => "bar",
          "bar" => "foo",; 
$myVar =  "Word!";
echo '<script type="text/javascript">alert("The $myVar is print_r($myArr) ");</script>';
?>

在页面上显示警告。我认为这是错误的,正确的做法是什么?

在JavaScript上下文中使用的数据应该始终使用json编码。这使得数据可以安全使用,因此您不必担心注入或转义。

<script>
  <?php 
      $myArr = array(1, 2, 3, 4, 5);
      $myVar = 'Word!';
      echo 'var myArr = ', json_encode($myArr), ';'; // var myArray = [1, 2, 3, 4, 5];
      echo 'var myVar = ', json_encode($myVar), ';'; // var myVar = "Word!";
  ?>
  console.log(myArr);
</script>

就像sean9999的答案一样,这个避免了污染全局命名空间,但以更直接的方式,没有PHP短标记。

<?php $bar = "qux"; ?>
<script>
;(function () {
    var foo = <?php echo json_encode($bar); ?>;
    alert(foo);
}());
</script>

您可以这样做,以限制污染全局命名空间的可能性

<?php
$myArr =  ["foo" => "bar", "bar" => "foo"]; 
$myVar =  "Word!";
?>
<script>
;(function(myArr,myVar){
  "use strict";
  alert( myVar + ' is ' + JSON.stringify(myArr) );
})(<?= json_encode($myArr) ?>,'<?= $myVar ?>');
</script>