2017-05-31 15 views
0

file_get_contents('php://input')から文字列を取得しています。私はjson_decode()を試しましたが、文字列はjsonではありません。ここにajaxリクエストとPHPコードがあります。 jsonをajaxリクエストから送信してPHP配列に変換するにはどうすればよいですか?"php:// input" json ajaxリクエストの文字列を返します

$data = file_get_contents('php://input'); 
var_dump($data); 
echo $data; 

出力:

string(7) "id=myId" 
"id=myId" 

アヤックス(付属のjQuery):

$.ajax({ 
    "url": "myFile.php", 
    "type": "POST", 
    "contentType": "Json", 
    "data": {"id": "myId"}, 
}).done(function(data, status) { 
    if (status == "success") { 
     console.log(data); 
    } 
}).fail(function(data, status, error) { 
    throw new Error(error); 
    console.log(data); 
    console.log(status); 
}); 

編集:json_encode()はnullを返しているので、私はこの質問から答えを使用することはできません。PHP: file_get_contents('php://input') returning string for JSON message

+0

JSONメッセージの文字列を返す[PHP:file \ _get \ _contents( 'php:// input')の可能な複製](https://stackoverflow.com/questions/21974951/php-file-get-contentsphp- json-messageのための入力戻り文字列) – Woodrow

+2

フォームエンコードされています。あなたは自分でそれを解読することも、PHPが既にそれをデコードした '$ _POST ['id']'でアクセスすることもできます。 – Sammitch

+0

'$ _POST [" data "]'と '$ _POST [" id "]'は私のために働いていなかったので、仕事をした 'file_get_contents( 'php:// input')'を強制的に使用しました – Rishi

答えて

2

Sammitchさんのコメントに記載されているように、あなたの現在のコードはそれを送信していますフォームエンコーディングで必要なものについては、サーバーに送信する前にデータを文字列化して、JSONとして受信します。電話を次のように変更してください。

$.ajax({ 
    "url": "myFile.php", 
    "type": "POST", 
    "contentType": "application/json", 
    "data": JSON.stringify({"id": "myId"}), 
}) 

これは入力がjsonエンコードされたオブジェクトになるはずです。

+0

ありがとう、それはそれを解決した – Rishi

+0

私の問題は、クライアント側ではなく、サーバー側にあったように見えます。これを実行した後、 'json_encode()'が動作しています! – Rishi

関連する問題