2015-11-19 126 views
0

經過我有以下結構:轉換爲JSON數組,並通過API

var arr = [ 
    { 
     aaa: "aaa1", 
     bbb: "bbb2" 
    }, 
    { 
     ccc: "ccc1" 
    } 
]; 

var fooBar = { 
    something1: "aaa", 
    something2: "bbb", 
    someArray: JSON.stringify(arr) 
}; 

我想這一切轉換成一個變量作爲JSON並將它傳遞給PHP服務器,就像這樣:

var data = "request=" + JSON.stringify(fooBar); 

但是當我現在嘗試在PHP來評價這樣的:

$output = json_decode($_POST['request']); 

輸出爲null。

這是因爲我得到JSON 4錯誤,這意味着語法錯誤。

的問題是看起來的someArray像這樣:

"[{"aaa":"aaa1","bbb":"bbb1"},{"ccc":"ccc1"}]" 

這不是有效的JSON。但是,我怎麼才能創建一個有效的JSON,以便以後在PHP中讀取?

+0

'var_dump($ _ POST ['request'])'看看到達服務器的是什麼。 –

回答

0

你的一些數據的調用JSON.stringify兩倍 - 其結果是這樣的:

""[{\"aaa\":\"aaa1\",\"bbb\":\"bbb2\"},{\"ccc\":\"ccc1\"}]"" 

,而不是僅僅在最後調用一次。

var arr = [ 
{ 
    aaa: "aaa1", 
    bbb: "bbb2" 
}, 
{ 
    ccc: "ccc1" 
} 
]; 

var fooBar = { 
    something1: "aaa", 
    something2: "bbb", 
    someArray: arr 
}; 

var data = "request=" + JSON.stringify(fooBar); 
0

當你撥打:

someArray: JSON.stringify(arr) 

你是那個值轉換爲一個字符串,而不是一個數組。你可能要做的是

var arr = [ 
    { 
     aaa: "aaa1", 
     bbb: "bbb2" 
    }, 
    { 
     ccc: "ccc1" 
    } 
]; 

var fooBar = { 
    something1: "aaa", 
    something2: "bbb", 
    someArray: arr // Assign the array to here 
};