json_encode не ускользнет от перевода строки - PullRequest
0 голосов
/ 24 января 2012

Во-первых, у меня есть поиск переполнения стека для ответа, но я не нашел решения, которое работает.

Я использую инфраструктуру 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

1 Ответ

5 голосов
/ 24 января 2012
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, просто вставьте его напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...