来自PHP的JSON字符串中的JS变量

时间:2014-01-15 13:49:50

标签: javascript php json

我从PHP数组生成一个JSON字符串以回显JS对象 这就是我想要的js:

var myVar = 123;    
//php output:  
var obj = {a:1, b:[1,2], c: myVar, d:Date.UTC(2014, 0, 07)}  

这就是我所拥有的:

<?php  
$array = array('a'=>1, 'b'=>array(1,2), 'c'=>???, 'd'=>???);  
echo json_encode($array);
?>  

问题是:我在PHP中添加了什么而不是问号,以便它不会转换为字符串?

2 个答案:

答案 0 :(得分:1)

JSON不支持变量或特殊Date对象。您只能使用标量值(字符串,数字,布尔值),数组和对象(关联数组)。

获得所需内容的方法是返回.js文件并让浏览器执行该操作(通过将其包含为脚本)而不是传输简单的JSON数据。否则,您只能定义接收方处理的“特殊”字符串。 (例如,可以相应地解析数组["var", "myVar"]。)

答案 1 :(得分:0)

你实际上可以这样做:

<?php  
  $array = array('a'=>1, 'b'=>array(1,2),
    'c'=>'@#myVar#@',
    'd'=>'@#Date.UTC(2014, 0, 07)#@'
  );
  $json = json_encode($array);
  echo preg_replace('/\"\@\#(.*?)\#\@\"/', '${1}', $json);
?>

但在js JSON.parse中不起作用,所以:

eval("var x = " + json_from_php);

不是一个好主意,但如果你需要它,它会起作用。请记住不要将其与任何由您的服务器生成的“json”一起使用。