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.
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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP