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