2

JSONfromjavascriptをスクリプトに送信しようとして長い間立ち往生していPHPます:送信は問題ありません(フィドラーで見ることができます)が、 :JSONで何も受信しませんPHP script

javascript

var person = {
  name: 'yoel',
  age: 28
};
xmlhttp.open("POST","http://localhost:8888/statisticsdb.php",true);
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send(JSON.stringify(person));   

php

echo 'trying to print ' . var_dump($_POST["name"]);

私は明らかに何かを見ることを期待しますが、var_dumpは何も返しません。助けていただければ幸いです!

4

3 に答える 3

6

試す:

$data = json_decode(file_get_contents('php://input'));
var_dump($data->name);

この理由は、POSTリクエストの本文が次のとおりであるためです。

{"name":"yoel","age":28}

ただし、phpは(ref)のようなものを期待しています:

name=yoel&age=28

json文字列は適切に解析できないため、$_POST空になります。

于 2012-09-03T14:04:18.407 に答える
2

$_POSTを持つ要求からデコードされた値を保持しますContent-Type application/x-www-form-urlencoded。つまり、以下を解析します。

param1=value1&param2=value2

の中へ:

array( 'param1' => 'value1', 'param2' => 'value2')

データをjson形式で送信する場合は、生のphp入力からjson_decodeする必要があります。

$input = file_get_contents('php://input');
$jsonData = json_decode($input);

そして、PHPオブジェクトにjsonのものを入力します。

于 2012-09-03T14:09:59.367 に答える
0

これを追加:

xmlhttp.setRequestHeader("Content-length", JSON.stringify(person).length);
于 2012-09-03T14:08:02.760 に答える