Estoy tratando de hacer una solicitud de prueba desde mi host local, a un sitio de desarrollo. Solo tengo que probar un código. Estoy tratando de hacer una solicitud de fetch muy simple que simplemente repite una respuesta en forma de json . Esta es una solicitud entre sitios y estoy deshabilitando cors. El problema es que cuando intento hacer eco de una respuesta con echo json_encode , la respuesta dice:
failed to load response data: No data found for resource with given identifier .
Sin embargo, si simplemente disparo un echo 'a'; antes de echo json_encode , ambas respuestas ahora aparecen en la pestaña de red. Estoy usando Chrome. Aquí algo de código:
fetch('https://example.com/test.php',{ method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', }, mode: "no-cors", body:JSON.stringify({ test:'1' }) }) .then(r => r.json()) .then(function(r){ console.log(r) })En php simplemente tengo, que no devuelve nada.
if(empty($_POST)){ $_POST = json_decode(file_get_contents("php://input"), true); } echo json_encode(['200'=>'Got it']);Si lo hago:
echo 'x'; echo json_encode(['200'=>'Got it']);Mi respuesta se ve así: (que el navegador detecta como json adecuado)
x{'200':'Got it'}¿Tienes alguna idea? He intentado poner cualquiera/todos estos en mi archivo php:
ini_set('display_errors', 1); header("Cache-Control: no-cache, must-revalidate"); header("Content-type: application/json"); header("Access-Control-Allow-Origin: *"); json_last_error_msg();¿Algunas ideas? gracias.
Puede hacer eco de una matriz o un objeto:
$obj = new stdClass(); $obj->message = 'gotit'; $obj->code = 200; echo json_encode($obj); // prints {"message":"gotit","code":200} $arr = Array('200' => 'gotit'); echo json_encode($arr); // prints {"200":"gotit"}ver si esto funciona
<?php $content = trim(file_get_contents("php://input")); echo json_encode(['200'=>'Got it']); exit();