繁体   English   中英

json_encode不能换行

[英]json_encode won't escape newlines

首先,我已经在Stack Overflow上搜索了答案,但是没有找到有效的解决方案。

我正在使用MVC框架(yii)生成一些视图并将它们放入数组中。 每个视图都是一张纸牌,我有一张纸牌数组($ deck)以及一张纸牌数组的数组($ hands,每个玩家的手牌列表)。 我只是想在前端设置一个javascript变量来存储用PHP创建的指针。 值得注意的是,我的观点有多行。 实际上,我当前的测试视图仅包括:

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

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。 例如,如果您通过AJAX将其作为字符串接收,则只需要解析或eval它即可。 如果您直接生成Javascript源代码,则直接将其嵌入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM