2012-05-03 7 views
2

こんにちは、私はJavascriptを使ってPHPにAjax経由でJsonを送信しようとしています。ファイアバグでデータを表示すると、データはindex.htmlによって正しく送信されます。正しいデータでJsonタイプを示します。 しかし、私はPHP上でJSONを読むことができないようです。 $ _POSTを使用してアクセスできません。 $ _POST ['name']を使用しようとしましたが、応答がありません。 $ _POSTを使用しようとすると、応答は配列になります。 私を助けてもらえますか?JsonをAjaxを使って渡すPHPを使ってPHPを動作させないでください

ここは私のJavaScriptコードです。

<html> 
<head> 
<script type="text/javascript"> 
    //Create Http request depending on browser 
    var xmlhttp; 
     if (window.XMLHttpRequest) 
      {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest();} 
     else 
      {// code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");} 

    xmlhttp.onreadystatechange=function(){ 
     if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
     document.getElementById("myDiv").innerHTML=xmlhttp.responseText;} 
     } 

    // Function to create 
    var url = "control.php"; 
    xmlhttp.open("POST",url,true); 
    xmlhttp.setRequestHeader("Content-Type", "application/json; charset=utf-8"); 
    var data=JSON.stringify({"name":"John", "time":"2pm"}); 
    xmlhttp.send(data); 
} 
</script> 
</head> 
<body> 
<h2>AJAX</h2> 
<button type="button" onclick="loadXMLDoc()">Request data</button> 
<div id="myDiv"></div> 
</body> 
</html> 

これは私のPHPコード

<?php 
include_once('JSON.php'); 
$json = new Services_JSON(); 
$value = $json->decode($_POST['name']); 
echo $value; 
?> 

では数日間、この上で働いていると私は本当にあなたが提供することができます任意の助けに感謝します。 ありがとうございました!

+0

JavaScriptライブラリを使用しない理由は? –

+0

jQuery.ajax()を使用します。 FirefoxのFirebugアドオン(タブコンソールまたはネットワーク) – peipst9lker

+0

でprint_r($ _ POST)を実行すると、$ _POSTグローバル変数が表示されます。たぶんそれはあなたの問題を解決するのに役立ちます –

答えて

2

ここです:

print_r($GLOBALS['HTTP_RAW_POST_DATA']); 
+0

ちょっと、ちょっと!本当にありがとう!これは私の問題を解決しました。この場合、$ GLOBALS ['HTTP_RAW_POST_DATA']がなぜうまくいったのかを私が読むことができるドキュメンテーションを教えてください。しかしそれにもかかわらず、皆さんにそんなに感謝します!あなたはちょうど私の日=を作った) – shaoming

+0

ここで見つけることができる[PHP Manual](http://cn.php.net/manual/en/reserved.variables.httprawpostdata.php)。しかし、私はprint_r ($ GLOBAL)、print_r($ _ SERVER))のような問題が発生したときに役立ちます。 :) –

1

私はそれが最初の全体のポストを解析する必要があると思います。

<?php 
include_once('JSON.php'); 
$json = new Services_JSON(); 
$value = $json->decode($_POST); 
echo $value; 
?> 

また、これらには含まれている必要がありますか? http://www.php.net/manual/en/function.json-decode.php

include_once('JSON.php'); 
$json = new Services_JSON(); 

あなただけのこの操作を行うことはできませんか?

echo json_decode($_POST) 
+0

こんにちは、すべてのコメントと回答ありがとう!私はあなたが示唆したようにちょうどエコーjson_decode($ _ POST)を使ってみましたが、与えられた応答は空白です。 print_r($ _ POST)を実行しようとすると、指定された出力はarrray()です。 – shaoming

0

アンでもよりよい解決策(hereを参照)を使用することである:

$json = json_decode(file_get_contents("php://input"), true) ?: []; 
print_r($json); 
関連する問題