2015-07-13 21 views
-1

我有一個包含17個複選框的表單。當其中一個變化時,JavaScript應該將值提交給服務器(運行PHP)。PHP獲取JSON字符串作爲數組

我想使用JSON,因爲複選框給其在PHP

在JS被分隔兩個數組,我創建一個JSON字符串,我想通過POST提交和PHP讀取和解碼。 該字符串看起來像這樣的atm:[["2015-06-26","2015-06-27"],["2","3","4","5","6","7","8","9","10","11","12","13","14"]] - 這就是我想要的。

這是我的AJAX功能樣子:

var fullArray = [dateArray, trackArray]; 
var jsonFullString = JSON.stringify(fullArray); 
//jsonFullString == [["a","b","c"],["d","e","f","g"]] 
$.ajax({ 
    type:'POST', 
    url:'shownitems.php', 
    data: jsonFullString, 
    success: function(data){ 
    //More script. This comment is reached, because 
    alert(data); 
    // works. 
    } 
}); 

當我得到它的PHP,並搜索$_POST[0]在JS成功函數不顯示任何東西。當我搜索$_POST時,我收到了「Array ..」。

這是我的PHP是什麼樣子(這是我的測試片段):

<?php 
echo $_POST; 
echo "."; 
echo $_POST[0]; 
echo "."; 
echo $_POST[0][0]; 
$array = array(); 
?> 

我也使用jQuery。

+2

使用'var_dump()'函數打印變量內容以進行調試。沒有$ _POST [0],'echo $ _POST'會打印「Array」,因爲它是一個數組 - 你只會用var_dump($ _ POST)知道里面的內容;​​' – Sven

+0

返回'array(0 ){}'...我無法獲取數組的內容......即使使用json_decode(); ... –

+0

php無法解析'[[「2015-06-26」,「2015-06-27」],[「2」,「3」,「4」,「5」,「6」,「7 「,」8「,」9「,」10「,」11「,」12「,」13「,」14「]]',則請求後的有效載荷必須是嚴格的鍵值對。 – zerkms

回答

0

你應該讓你的要求的內容,而不是$_POST變量。

像這樣的

$json = file_get_contents('php://input'); 
$obj = json_decode($json); //Will contain your array of two arrays 

在你希望得到您的文章的變量,比如你在幹什麼,你可以改變你的AJAX請求和使用情況:

$.ajax({ 
    type:'POST', 
    url:'shownitems.php', 
    data: { 
    data: jsonFullString 
    }, 
    success: function(data){ 
    //More script. This comment is reached, because 
    alert(data); 
    // works. 
    } 
}); 

而且你的PHP會:

$json = $_POST["data"]; 
$obj = json_decode($json); //Will contain your array of two arrays 
1

在您的JS:

/* dateArray and trackArray must be variables with values */ 
$.ajax({ 
    method: "POST", 
    url: "shownitems.php", 
    data: { date: dateArray, track: trackArray } 
}).done(function(response) { 
    alert(response); 
}); 

在你的PHP:

<?php 
    var_dump('Date: '.$_POST['date']); 
    var_dump('Track: '.$_POST['track']); 
?>