簡體   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