2017-02-21 26 views
1

我從PHP我加入addslashes();這導致到JSON從PHP到JavaScript腳本單qoutes

["01","\"Mia\'s\""] 

JSON,當我把它傳遞給Javascript和嘗試解析它,我得到這個錯誤,我可以沒有辦法解析它。

["01","\"Mia\ 

Uncaught SyntaxError: Unexpected token T in JSON at position at JSON.parse() at convertJSONToArray (add_something:2830)

這裏是我的轉換

// Converting json to array 
     function convertJSONToArray(jsonValue){ 

      var arr = []; 
      var parsed = JSON.parse(jsonValue); 
      for(var x in parsed){ 
      arr.push(parsed[x]); 
      } 
      return arr; 
     } 

UPDATE

我固定它。 將單引號替換爲unicode。

+5

你不需要送你的JavaScript/jQuery的前加斜槓。 – Raptor

+1

什麼是循環?不會'分析'已經包含所需的數組?另外,什麼jQuery?無論如何,不​​要在JSON中逃避撇號。 – nnnnnn

+0

您是手動創建JSON字符串還是使用'json_encode($ array)' – RiggsFolly

回答

0

我認爲你正在構造JSON與純echo語句和字符串。也許是這樣的:

<?php 

$data = array("01","Mia's"); 
$escaped = array(); 
foreach ($data as $value) { 
    $escaped[] = '"' . addslashes($value) . '"'; 
} 
echo '[' . implode(',', $escaped) . ']'; 

?> 

這實際上很容易出錯並且不靈活。

您可以使用json_encode來生成JSON。它會正確處理您的轉義和編碼。沒有必要去做你自己的addslashes

<?php 

echo json_encode(array("01","Mia's", 'my "Hello"')); 

?> 

返回結果:

["01","Mia's","my \"Hello\""]