Eu estou recebendo uma string de file_get_contents("php://input")
. eu tentei json_decode()
, mas a string não é um json. Aqui está o pedido de ajax e o código php. Como posso obter o json enviado da solicitação ajax e transformá-lo em uma matriz php?
$data = file_get_contents("php://input");
var_dump($data);
echo $data;
Saída:
string(7) "id=myId"
"id=myId"
Ajax (inclui 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);
});
Editar: json_encode()
está retornando null, então não posso usar a resposta desta pergunta: PHP: file_get_contents ('php: // input') retornando string para mensagem JSON
Respostas:
3 para resposta № 1Como Sammitch mencionou em seu comentário, seuo código atual está enviando-o com codificação de formulário. Para o que você deseja, restrinja os dados antes de enviá-los ao servidor, para que eles sejam recebidos como JSON. Modifique sua chamada para ficar assim:
$.ajax({
"url": "myFile.php",
"type": "POST",
"contentType": "application/json",
"data": JSON.stringify({"id": "myId"}),
})
Isso deve resultar na entrada sendo um objeto codificado json.