2017-04-01 229 views
0

將JSON字符串(數組)從PHP發送到PHP幾個小時,我嘗試找到一個簡單的解決方案,將準備好的JSON字符串發送到PHP方法。 JavaScript部分:通過發送POST

form = document.createElement("form"), 
node = document.createElement("input"); 
var element1 = document.createElement("input"); 
form.method = "POST"; 
element1.value='[{"id": 110, "teamname": "first"}, {"id": 140, "teamname": "second"}]'; 
element1.name="teams"; 
form.appendChild(element1); 
form.appendChild(node.cloneNode()); 
form.action = "?updateTeamnames"; 
form.style.display = "none"; 
document.body.appendChild(form); 
form.submit(); 
document.body.removeChild(form); 

PHP: 如果我回聲(回聲的file_get_contents( 'PHP://輸入');)的原始數據。我得到這個:

teams=%5B%7B%22id%22%3A+110%2C+%22teamname%22%3A+%22first%22%7D%2C+%7B%22id%22%3A+140%2C+%22teamname%22%3A+%22second%22%7D%5D 

我怎樣才能訪問JSON字符串團隊? 我試過這個:

$data = json_decode(file_get_contents('php://input'), true); 
echo $data; 

沒有成功。我認爲$數據是NULL。
我嘗試這樣做:

echo $_POST['teams']; 

這使我這個:

[{\「id\「: 110, \「teamname\「: \「first\「}, {\「id\「: 140, \「teamname\「: \「second\「}] 

不能被用作json_decode字符串。

的主要問題是,我不知道哪一部分是錯誤的...
感謝您的幫助

+0

爲什麼不使用jQuery.ajax發送數據? –

+0

如果你在json_decode()上放置$ _POST ['teams'],那麼它解決了這個問題!爲什麼不能用作字符串? – CyC0der

+0

我做到了。我寫了$ object = json_decode($ _ POST ['teams']); 之後,我可以訪問一個值。沒有成功。我很傷心:我不知道哪一部分是錯的。也許只是像$ objec [0] - > id或$ object [0] ['id']的訪問... – Franklin84

回答

0

您可以使用jQuery.ajax後的數據如下:

<script> 
jQuery.ajax('./?updateTeamnames', { 
    method: 'POST', 
    data: {teams: [{id: 110, teamname: "first"}, {id: 140, teamname: "second"}]} 
}); 
</script> 

在PHP腳本中,您可以通過轉儲查看您的數據:

var_dump($_POST['teams']); 
+0

然後我該如何訪問第一個元素的ID? – Franklin84

+0

你可以通過使用這個來訪問第一個數組元素的id:'$ _POST ['teams'] [0] ['id']' –

+0

剛剛發現:ajax不起作用。我從來沒有用jQuery ajax做過任何事情。 我只是將代碼複製到一個函數中,但它從不發送郵件。 – Franklin84