Solicitud XMLHTTP que pasa cadena JSON como datos de publicación sin procesar

Mi JavasSript envía la solicitud:

var jax = new XMLHttpRequest(); jax.open("POST", "http://localhost/some.php", true); jax.setRequestHeader("Content-Type", "application/json"); jax.send(JSON.stringify(jsonObj)); jax.onreadystatechange = function() { if(jax.readyState === 4) { console.log(jax.responseText); } } 

En este momento todo lo que mi php hace es:

 print_r($HTTP_RAW_POST_DATA); print_r($_POST); 

El resultado de los datos de entrada sin procesar es la cadena del objeto, pero la matriz posterior está vacía.

 {"name" : "somename", "innerObj" : {} ... } Array ( ) 

Necesito obtenerlo en el formato correcto para la variable $_POST , y jquery no es una opción.

Bien, dado que el usuario1091949 publicó mi comentario como respuesta, aquí está lo mismo otra vez, por lo que OP puede elegir quién es la respuesta para aprobar (si funcionó):

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

En este punto, $json será una instancia de stdClass … Si prefiere una matriz asociativa, simplemente pase un segundo parámetro a json_decode('{"json":"string"}', true);

Por cierto: nunca , nunca use el prohibido supresor de errores de la muerte : @ . Los errores están ahí para ayudarte , no para molestarte …

Necesita obtener los datos de publicación sin procesar:

 if ($_SERVER['REQUEST_METHOD'] != 'POST') { exit; } $postdata = @file_get_contents("php://input"); $json = json_decode($postdata, true); 

$json será una matriz asociativa que contiene tus datos JSON.