2013-04-06 66 views
1

嘿傢伙我真的需要這方面的幫助。我通過這個JSON對象到PHP ..javascript對象到json字符串到php數組 - > POST

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 
+0

你確定$ _POST [「xa」]是一個數組嗎?和utf8_encode應該在引號內,否則php會發出通知(或警告)。 – radalin 2013-04-06 23:03:44

+0

嘗試:'console.log(somearray);'在$之前。post和'var_dump($ _ POST ['xa');'在你的php文件開頭的某處。 – meeDamian 2013-04-06 23:05:12

+0

if if echo the POST我得到這個: [{\「x \」:\「4 \」,\「to \」:\「2 \」}}] and console before $ .post是這樣的: [{「x」:{「xt」:「9」,「to」:「2」}}] – jycr753 2013-04-06 23:06:30

回答

1

嘗試。

+0

感謝隊友完全工作。仍然沒有得到它。我有魔力報價:S – jycr753 2013-04-07 00:00:08

+1

猜不到。嘗試使用'phpinfo()'來查看哪個php.ini實際上正在被使用(並且確認魔術引號實際上是)。然後關閉php.ini中的魔術引號。 – 2013-04-07 00:02:47

3

$.toJSON(x)不做就地轉化;它返回的JSON,你只是丟棄它。直到你解碼JSON

$.post(
    "temp/sop.php", 
    { xa: $.toJSON(somearray) }, 
    // ... 
}); 

然後,在PHP端,你不會想array_map因爲它不會是一個數組:你需要這個,而不是

$xtj = $_POST["xa"]; 
$encodedArray = utf8_encode($xtj); // I'm not sure you need this, by the way. 
$asnk = json_decode($encodedArray); 
+0

我在javascript中響應後在控制檯上得到這個: 響應 - NULL – jycr753 2013-04-06 23:12:41

+0

這是POST在服務器上接收到的內容: [{\「cart \」:{ \「itemid \」:\「4 \」,\「itemAmount \」:\「1 \」}}] 但json_encode後,我得到一個空結果 也許magic_quotes? – jycr753 2013-04-06 23:26:30

+0

@ jycr753:是的,嘗試關閉魔術引號。 – icktoofay 2013-04-06 23:27:43

0

你在做什麼你正在轉換爲JS中的json字符串($.toJSON())。 然後在PHP中,您再次嘗試轉換爲json字符串(json_encode())。 而你在使用array_map()的東西不是一個數組,而是一個字符串。使用 if(get_magic_quotes_gpc()) $xtj = stripslashes($xtj); 試圖解碼之前就失去了過多的逃逸(嘗試echo $_POST["xa"];看到它的內容。)

+0

即時通訊使用json_decode http://php.net/manual/en/function.json-decode.php – jycr753 2013-04-06 23:34:00

+1

不根據您的問題上面... – 2013-04-06 23:40:14

+0

我的壞伴侶。只是一個錯過咒語:)但它是json_decode :)感謝注意它:) – jycr753 2013-04-06 23:43:39