Cuando uso Content-Type: application/x-www-form-urlencoded para realizar una solicitud POST usando JavaScript
var url = "http://localhost:80/response.php"; var xhr = new XMLHttpRequest(); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") // Setting content-type xhr.onreadystatechange = function() { if(xhr.readyState === 4){ document.getElementById('div_response').innerHTML = xhr.responseText; } }; var data = "message=Hello"; xhr.open("POST", url, true); xhr.send(data); Los datos de solicitud POST en response.php se encuentran en la variable $_POST cuando Content-Type: application/x-www-form-urlencoded
if(isset($_POST['message']) && !empty($_POST['message'])) { echo $_POST['message']; } Pero, cuando cambio Content-Type a Content-Type: application/json . ¿Dónde se encuentran mis datos JSON publicados en PHP? Porque $_POST no contiene ningún dato cuando Content-Type: application/json .