json返回字符串而不是对象

时间:2012-12-08 21:54:28

标签: php javascript json

我有

 $age = implode(',', $wage);   // which is object return:  [1,4],[7,11],[15,11]
  $ww = json_encode($age);

然后我在这里找回它

    var age = JSON.parse(<?php echo json_encode($ww); ?>); 

所以,如果我做

   alert(typeof(<?php echo $age; ?>))   // object
   alert(typeof(age))                   //string

在我的情况下,JSON.parse作为字符串重新调整。

我怎样才能让json作为对象返回?

编辑:

 var age = JSON.parse(<?php echo $ww; ?>); // didnt work , its something syntax error

3 个答案:

答案 0 :(得分:2)

implode返回一个字符串,因此json_encode对此进行编码是很自然的。它不会识别已经作为字符串传递的类似JSON的数据。

如果你想获得一个对象,你必须将一个关联数组传递给json_encode

$foo = array(
    1 => 4,
    7 => 11,
    15 => 11
);

echo json_encode($foo); // {1:4,7:11,15:11}

关于$wage在崩溃之前的样子信息如此之少,很难准确说出你想得到什么。该结构([1,4],[7,11],[15,11])如何成为对象?每个元组的第一个元素是关键吗?这就是我用我的例子所假设的,但可能是关闭的。

答案 1 :(得分:1)

一个。您会收到语法错误,因为您需要将字符串括在引号内,如下所示:

var age = JSON.parse("<?php echo $ww; ?>");

湾此外,您不需要 JSON.parse。你可以简单地在服务器端已经json_encoded之后回显php var:

var age = <?php echo $ww; ?>;

JSON.parse用于将 JavaScript 字符串转换为对象。对于PHP字符串,一旦它被构建为JSON,在正确的位置回显它就相当于自己编写。

答案 2 :(得分:1)

var age = [<?php echo $age; ?>];