2015-11-19 128 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 
};