Этот кусок кода jQuery отправляется на одну из наших php-страниц.
var json = '{"object1":{"object2":[{"string1":val1,"string2":val2}]}}'; $.post("phppage", json, function(data) { alert(data); });
Внутри phppage я должен выполнить некоторую обработку в зависимости от данных сообщения. Но я не могу прочитать данные сообщения.
foreach ($_POST as $k => $v) { echo ' Key= ' . $k . ' Value= ' . $v; }
То, что вам нужно, должно работать нормально, но объект JSON превращается в массив массивов, когда он предоставляется данным POST. Вы получите что-то вроде этого:
["object1"]=> array(1) { ["object2"]=> array(1) { [0]=> array(2) { ["string1"]=> string(4) "val1" ["string2"]=> string(4) "val2" } } } }
Таким образом, object1 – это массив, который содержит все остальные данные. Если вы это сделаете
foreach ($_POST as $key => $val) { echo $key . " > " . $val }
Он печатает «object1> Array». Другими словами, вам нужно также перебирать значение. Как вы это делаете, зависит от того, как структурируются данные, которые вы получаете, или знаете ли вы, как они структурированы.
используйте file_get_contents("php://input")
чтобы захватить данные, полученные вашим скриптом, когда пары key=value
не используются. Этот подход распространен с API-интерфейсами jsonrpc.
Вместо:
$.post("phppage", json, function(data) { alert(data); });
Сделай это:
$.post("phppage", 'json':json, function(data) { alert(data); });
Изменить на:
$json=json_decode($_POST['json']); foreach($json as $k => $v) { echo ' Key= ' . $k . ' Value= ' . $v; }
или:
$json=json_decode($_POST['json']); print_r($json);