2017-04-01 20 views
0

時間すぐにPHPのメソッドに準備完了のJSON文字列を送信する簡単な解決策を探します。 Javascriptの一部:JavascriptからPOST経由でPHPにJSON文字列(配列)を送信

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; 

成功なし。 $ dataはNULLだと思います。

echo $_POST['teams']; 

これに私を導いた:json_decode内の文字列として使用することはできません

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


は、私はこれを試してみました。

主な問題は、あなたが以下のようにデータを投稿するjQuery.ajaxを使用することができます...私が間違っているどの部分かわからないという、

+0

jQuery.ajaxを使ってデータを送信しないのはなぜですか? –

+0

$ _POST ['teams']をjson_decode()に置くと問題が解決しました!なぜ文字列として使用できないのですか? – CyC0der

+0

私はそれをしました。私は$ object = json_decode($ _ POST ['teams'])を書きました。 その後、私は値にアクセスするためにトリッシュします。失敗。 私は悲しいが、私はどの部分が間違っているのか分からない。多分$ objec [0] - > id、$ object [0] ['id']のようなアクセスです... – Franklin84

答えて

0

を支援するための
感謝です:

<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

関連する問題