1

嘿伙计们,我真的需要帮助。我将此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
4

3 回答 3

3

$.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);
于 2013-04-06T23:05:23.750 回答
1

在尝试解码之前尝试使用 if(get_magic_quotes_gpc()) $xtj = stripslashes($xtj); 丢失过多的转义。

于 2013-04-06T23:54:22.347 回答
0

您正在做的是在 JS ( $.toJSON()) 中转换为 json 字符串。然后在 PHP 中,您再次尝试转换为 json 字符串 ( json_encode())。而且您使用array_map()的不是数组而是字符串。(尝试echo $_POST["xa"];查看它的内容。)

于 2013-04-06T23:22:55.783 回答