2012-01-24 83 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