TransWikia.com

PHP não recebe POST Json

Stack Overflow em Português Asked by Weverton on November 27, 2020

Estou tentando criar uma função de envio via Ajax com JavaScript puro, porém o PHP não recebe os dados.

O JavaScript está enviando os dados corretamente.

Código JavaScript:

    this._data = JSON.stringify(data);
    Object.freeze(this);

    function reqListener() {
        console.log(this.responseText);
    };

    let request = new XMLHttpRequest();
    request.onload = reqListener;;
    request.open('POST', '/api');
    request.setRequestHeader('Content-Type', 'application/json;');
    request.send(this._data);

Eu tentei usar application/x-www-form-urlencoded também sem sucesso.

Código PHP:

$jSon = array(); 
$getPost = file_get_contents('php://input');
$post = json_decode($getPost);
echo json_encode($jSon);    

O objetivo destes códigos é enviar um JSON via Ajax e o PHP retornar ele mesmo.

2 Answers

Troquei: this._data = JSON.stringify(data); Por: var json_data = JSON.stringify(data);

Deu certo aqui

Answered by André Moreira on November 27, 2020

Você possui um exemplo quase funcional, exceto por dois detalhes (object freeze no javascript e usar uma variável vazia no json_encode). Executando o exemplo mínimo tudo executa como o esperado. Veja:

<script>
    var data = { "name":"John", "age":30, "city":"New York"};
    this._data = JSON.stringify(data);
    //Object.freeze(this);

    function reqListener() {
    console.log(this.responseText);
    };

    let request = new XMLHttpRequest();
    request.onload = reqListener;;
    request.open('POST', '/stackoverflow.php');
    request.setRequestHeader('Content-Type', 'application/json;');
    request.send(this._data);
</script>

Já no php:

<?php
$jSon = array(); 
$getPost = file_get_contents('php://input');
$jSon = json_decode($getPost);
echo json_encode($jSon);

Olhando no depurador do navegador dá para perceber que os dados enviados são retornados pelo script em php.

Answered by Juven_v on November 27, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP