2012-01-24 44 views
0

首先,我有搜索堆栈溢出的答案,但我还没有找到一个解决方案的工作。我正在使用MVC框架(yii)生成一些视图并将它们放入数组中。每个视图都是一张牌,我拥有一系列牌($ deck)以及一系列牌($ hands,每个牌手的牌名单)。我只是试图在前端设置一个JavaScript变量来存储PHP中创建的手。值得注意的是,我的观点是多行。事实上,我目前的测试数据视图只包括:json_encode不会逃避换行符

test 
test 

因此我使用json_encode,但它给我下面的错误,当我使用$ .parseJSON():

Uncaught SyntaxError: Unexpected token t 

我读其他地方它需要(无论什么原因)使用json_encode两次。我已经尝试过,但没有帮助。

有了一个json_encode,呼应$hands的输出(后跟一个出口)看起来很健康:

[["test\ntest","test\ntest","test\ntest","test\ntest", etc... 

但是,当我不退出,我每一次出现语法错误。

编辑:这是我的代码示例。请注意,$ cards通常是一个HTML数组,但在我仍然错误的简化情况下,只包含上述两行'test'。

$deck = array(); 
    foreach ($cards as $card) { 
     $deck[] = $this->renderPartial('/gamePieces/cardTest', 
       array('card'=>$card), true); 
    } 
    $hands = Cards::handOutCards($deck, $numCards , $numPlayers); 
    $hands = json_encode($hands); 

    echo $hands; exit; 

使用JavaScript,我做了以下内容:

var hands = $.parseJSON('<?php echo json_encode($hands); ?>'); 

在页面加载错误。

任何帮助,将不胜感激!

感谢,

ParagonRG

+3

使用json_encode两次意义不大。 – Pointy

+0

那你为什么不保持退出?为什么在JSON数组中有一个额外的'''引号? – mario

+1

请显示一些实际的代码,包括使用'json_encode'的部分。 – nnnnnn

回答

5
var hands = $.parseJSON('<?php echo json_encode($hands); ?>'); 

这将导致类似:

var hands = $.parseJSON('{"foobar":"baz'"}'); 

如果有编码字符串中的字符',它会打破JavaScript语法。既然你直接输出成JSON Javacript,只是做:

var hands = <?php echo json_encode($hands); ?>; 

JSON在语法上是有效的JavaScript。你只需要解析它或eval它,如果你通过AJAX以字符串的形式接收它。如果您直接生成Javascript源代码,只需直接嵌入它。

+0

谢谢。这是我没有得到的一个基本问题;问题解决了。 – Paragon