2012-12-08 141 views
0

我有JSON返回字符串而不是對象

$age = implode(',', $wage); // which is object return: [1,4],[7,11],[15,11] 
    $ww = json_encode($age); 

,然後我在這裏找回

var age = JSON.parse(<?php echo json_encode($ww); ?>); 

所以,如果我做

alert(typeof(<?php echo $age; ?>)) // object 
    alert(typeof(age))     //string 

在我的情況JSON.parse重新調整爲串。

我該如何讓json作爲對象返回?

編輯:

var age = JSON.parse(<?php echo $ww; ?>); // didnt work , its something syntax error 
+0

'$ WW = json_encode($歲)'然後你回聲'json_encode($ WW);'所以真的'VAR年齡= JSON.parse(這是你真正想做什麼嗎? – Popnoodles

+0

爲什麼你使用json_encode兩次?第二次你基本上在一個字符串上運行json_encode,這是沒有道理的,因爲json_encode運行在數組\對象上並轉向他們到字符串 – Matanya

+0

我編輯我的帖子,因爲你告訴我@Matanya –

回答

1
var age = [<?php echo $age; ?>]; 
2

implode返回字符串,所以它是很自然的json_encode編碼它本身。它不能識別已經作爲字符串傳遞的類JSON數據。

如果你想獲得一個對象,你有關聯數組傳遞給json_encode

$foo = array(
    1 => 4, 
    7 => 11, 
    15 => 11 
); 

echo json_encode($foo); // {1:4,7:11,15:11} 

用什麼$wage看起來像它的崩盤之前這麼少的信息,這是很難告訴你想要什麼要得到。這個結構怎麼樣([1,4],[7,11],[15,11])是一個對象?每個元組的第一個元素是關鍵嗎?這就是我用我的例子所假設的,但它可能是關閉的。

+0

但爲什麼類型的$年齡是對象和年齡的類型是我的代碼中的字符串 –

+0

@peter,你必須看看這生成的代碼。數組中的typeof([1,4],[7,11],[15,11])和'typeof'返回'object'(簡單地說,'typeof'返回最後一個逗號的類型'它作爲參數接收的分隔值)。在第二種情況下,你會得到'typeof(「[1,4],[7,11],[15,11]」)',這肯定是一個'string'字面值(注意引號)。 – zneak

+0

我沒有使用雙引號「typeof(」[1,4],[7,11],[15,11]「)' –

1

a。你得到一個語法錯誤,因爲你需要引號內的字符串,像這樣:

var age = JSON.parse("<?php echo $ww; ?>");

灣此外,你不需要JSON.parse。你可以簡單地附和PHP VAR後,這是在服務器端已經json_encoded:

var age = <?php echo $ww; ?>;

JSON.parse有一個的JavaScript字符串轉換爲對象。在PHP字符串的情況下,一旦它被構建爲JSON,在正確的地方回顯它相當於自己編碼。

+0

首先,我不知道我在哪裏寫過雙引號,因爲你提到過 –

+0

一個。你沒有。你應該有。灣正如我所說,這是多餘的 – Matanya

+0

b變量年齡也是沒有json解析的字符串 –

相關問題