Tengo este código Fetch (POST) pero la respuesta dice status: 404 aunque cuando abro la URL en el navegador, la página existe y devuelve un JSON. cuando cambié la url a https://httpbin.org/post , devuelve datos normales... y cuando uso la misma url pero con el método GET (sin ningún parámetro de init para el método de recuperación), devuelve el status: 200 .
¿Qué estoy haciendo mal?
cuando abro la url en el navegador: 
controlador php
/* * filepath: application/modules/test/controllers/test.php */ public function homepage() { $this->load->view('home', $this->data); } public function get_result() { $response = [ 'status' => 0, 'message' => 'abcde', ]; echo json_encode($response); }html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <input type="button" id="btn1" value="Button1"> <script src="/assets/js/test_fetch.js"></script> </body> </html>javascript
/* * filepath: /assets/js/test_fetch.js */ /*! * Filename: test_fetch.js * Tanggal: 20220214 * Author: david santana * script utk belajar ttg penggunaan fetch API * Copyright Gotravelly.com@2022 */ const myBtn1 = document.querySelector('#btnSubmit'); console.log(myBtn1); myBtn1.addEventListener('click', function() { // fetch data from server const url = '/test/get_results'; // const url = 'https://httpbin.org/post'; let myData = { user_id: 123, name: 'david', }; fetch(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' // 'Content-Type': 'application/x-www-form-urlencoded', }, body: JSON.stringify(myData) }) .then(response => console.log(response)); });no importa, mi colega me señaló que no agregué el csrf y necesito usar FormData en el parámetro del body ... ¡después de probarlo, funciona!
pero luego traté de usar Object con el mismo par clave-valor csrf como este, pero no funciona
let myData = { user_id: 123, name: 'david', }; let csrf_name = document.querySelector('#csrf').attributes['name'].value; let csrf = document.querySelector('#csrf').value; myData[csrf_name] = csrf; lo que me lleva a una nueva pregunta (si puedo hacer una pregunta de seguimiento): ¿POST necesita usar siempre un FormData como parámetro body ?