[英]javascript objects to json string to php array -> POST
嘿伙计我真的需要帮助。 我把这个json对象传递给php ..
var x = {};
x.xt = {};
x.xt.id = id;
x.xt.to = foo;
somearray.push(x);
将对象转换为json:
$.toJSON(x);
json字符串:
[{"x":{"xt":"9","to":"2"}}]
他们发布这个:
$.post(
"temp/sop.php",
{ xa: somearray},
function(data){
console.log("response - "+ data);
});
服务器端:
$xtj = $_POST["xa"];
$encodedArray = array_map(utf8_encode, $xtj);
$asnk = json_decode($encodedArray);
返回:
string(4) "null"
和这个:
$asnk = json_encode($xtj);
收益:
null
它设置的数据库:
UTF8
当我测试它是否是一个数组时,回来是真的..
任何想法如何解决这个问题? 谢谢
服务器端:
$xtj = $_POST["xa"];
$asnk = json_decode($xtj);
这会返回:
NULL
$.toJSON(x)
不会就地进行转换; 它返回 JSON,你只是丢弃它。 你需要这个:
$.post(
"temp/sop.php",
{ xa: $.toJSON(somearray) },
// ...
});
然后,在PHP方面,你不需要array_map
因为在你解码JSON之前它不会是一个数组:
$xtj = $_POST["xa"];
$encodedArray = utf8_encode($xtj); // I'm not sure you need this, by the way.
$asnk = json_decode($encodedArray);
尝试使用if(get_magic_quotes_gpc()) $xtj = stripslashes($xtj);
在尝试解码之前失去过多的逃逸。
你正在做的是你转换为JS中的json字符串( $.toJSON()
)。 然后在PHP中你再次尝试转换为json字符串( json_encode()
)。 并且你在不是数组而是字符串的东西上使用array_map()
。 (尝试echo $_POST["xa"];
查看它的内容。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.