2014-02-14 48 views
1

我有一個PHP嵌套數組存儲在變量$myArray,下面是如何在var轉儲到瀏覽器後數組看起來像(它不是一個完整的輸出)。PHP數組轉換爲JSON - 未捕獲SyntaxError:意外的輸入結束

<?php var_dump($myArray); ?> 

輸出:

array (size=4) 
    'id' => string '162' (length=3) 
    'content' => string 'Test content' (length=12) 
    'children' => 
    array (size=16) 
     0 => 
     array (size=4) 
      'id' => string '29208' (length=5) 
      'content' => string 'Test content 1' (length=14) 
      'children' => 
      array (size=3) 
       ... 
     1 => 
     array (size=4) 
      'id' => string '29215' (length=5) 
      'content' => string 'Test content 2' (length=14) 
      'children' => 
      array (size=1) 
       ... 
     2 => 
     array (size=3) 
      'id' => string '29220' (length=5) 
      'content' => string 'Test Content 3' (length=14) 

讀取從JavaScript變量陣列如下:

<script type="text/javascript"> 
var myVar = JSON.parse('<?php json_encode($myArray) ?>'); 
</script> 

返回以下錯誤在控制檯

Uncaught SyntaxError: Unexpected end of input 

在調試代碼的同時,我做了以下操作:

創建一個新變量並在其中存儲一些JSON數據,然後JSON將其解析爲另一個變量,然後最終安慰輸出並正常工作。

<script type="text/javascript"> 
var x = '{"id":123,"content":"This is a test content"}'; 
var myVar = JSON.parse(x); 
console.log(myVar); 
</script> 

輸出與控制檯的值的對象:

Object 
    content: "This is a test content" 
    id: 123 

我在做什麼錯?

+0

爲什麼JSON編碼,然後解析JS?爲什麼不照原樣打印?像:'var myVar = <?= json_encode($ myArray)?>;' – Rudie

+0

Rudie是正確的,當以這種方式直接輸出到瀏覽器時,您不需要將JSON解析爲字符串。 – phpisuber01

+0

[如何訪問JavaScript或jQuery中的PHP變量而不是<?php echo $ variable?>](http://stackoverflow.com/questions/1808108/how-to-access-php-variables-in- javascript-or-jquery-than-php-echo-vari) – user1596138

回答

6

var myVar = <?php echo json_encode($myArray) ?>; 應該這樣做。不需要'字符,因爲JSON對象可以讀作寫的,因爲它直接輸出到頁面上,而不是給它一個字符串沒有分析是必要的

+0

謝謝。它現在有效。 – h4kl0rd

+0

很高興我能提供幫助,儘管如果您也接受答案,我將不勝感激 –

3

你需要echo出json對象。

<?php json_encode($myArray) ?> 

<?php echo json_encode($myArray) ?> 
+0

不,'JSON.parse'將一個字符串解析爲一個javascript對象。如果你拿出單引號,你將一個Javascript對象轉換成一個Javascript對象。基本上在這種形式中,你甚至不需要'JSON.parse',你可以直接從'json_encode'設置變量。即'var obj = <?php echo json_encode($ myArray); ?>;' – phpisuber01

+0

我試過'var myVar ='<?php echo json_encode($ notes); ?>';'和'var myVar ='<?= json_encode($ notes)?>';'返回'Uncaught SyntaxError:意外的標識符' – h4kl0rd

2

這裏有一個小速記技巧爲你解釋here

你可以簡單地做<?=$var?>。它基本上是echo的簡寫,只有在啓用速記標記<?時纔有效。

所以回答你的問題(如速記開放標籤),因此您可以使用此

var myVar = <?=json_encode($myArray)?>; 這相當於什麼@Dar給你以上不滿難看。

相關問題