PHP回显使用PHP变量的JavaScript警报的正确格式是什么?
我曾经PHP回显使用PHP变量的JavaScript警报的正确格式是什么?,javascript,php,html,alert,Javascript,Php,Html,Alert,我曾经 在页面上显示警报。我认为这是错误的,正确的方法是什么?您应该始终对JavaScript上下文中使用的数据进行JSON编码。这使得数据可以安全使用,因此您不必担心注入或转义 <?php $myArr = "foo" => "bar", "bar" => "foo",; $myVar = "Word!"; echo '<script type="text/javascript">alert("The $myVar is
在页面上显示警报。我认为这是错误的,正确的方法是什么?您应该始终对JavaScript上下文中使用的数据进行JSON编码。这使得数据可以安全使用,因此您不必担心注入或转义
<?php
$myArr = "foo" => "bar",
"bar" => "foo",;
$myVar = "Word!";
echo '<script type="text/javascript">alert("The $myVar is print_r($myArr) ");</script>';
?>
console.log(myArr);
以下是您如何以限制污染全局名称空间的可能性的方式执行此操作
<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>
;(功能(myArr、myVar){
“严格使用”;
警报(myVar+'is'+JSON.stringify(myArr));
})(,'');
与之类似,这一方法避免了对全局名称空间的污染,但更简单,没有PHP短标记
<?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>
;(功能(){
var foo=;
警报(foo);
}());
它不起作用bc无效phpI怀疑真正的问题是$myArr值周围缺少方括号-请参阅我对Paul答案的编辑。事实上,PrimtIrr()不会在该字符串中运行。实际上我复制了数组,并没有复制它,只为演示HeSeHeLundDeNo.<代码> var >代码>语句在<代码> <代码>标签中。@ WAR10CK是的,谢谢。所有的都是真的-但是考虑到OP,考虑实际上包括请求的<代码>警报()。我选择不使用通常不可见的console.log()
@PaulRoub,因为这会使事情复杂化,因为他想要的是与print\r()
等价的东西。我不想把他和把它串起来展示混淆。通过这种方式,他得到了一个数组和字符串的示例,并学习了如何一次就正确地调试所有内容。如果我有多个这样的代码段,这是一个好的解决方案吗?即使$myVar
是一个字符串,您仍然必须转义它。虽然这个字符串现在包含“Word!”,但肯定不会总是这样。即使您确实想将其用作字符串,它也缺少引号json_encode()
JavaScript上下文中使用的所有内容,您无需担心。谢谢@Brad。我加了引号。
<?php $bar = "qux"; ?>
<script>
;(function () {
var foo = <?php echo json_encode($bar); ?>;
alert(foo);
}());
</script>