/ / “Php: // input” retornando string para json ajax request - javascript, php, jquery, json, ajax

"Php: // input" retornando string para json ajax request - javascript, php, jquery, json, ajax

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 № 1

Como 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.