簡體   English   中英

javascript對象到json字符串到php數組 - > POST

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM