Estoy tratando de reaccionar, usando axios, para enviar una solicitud de publicación a un archivo PHP. La función que maneja el botón para enviar los datos es esta:
function handleAddPeople(event){ const name = nameRef.current.value; const surname = surnameRef.current.value; const age = ageRef.current.value; axios({ method: 'post', url: 'src/api/addPeople.php', data: { name: name, surname: surname, age: age } }).then(function(response){ console.log(response); }).catch(function (error) { console.log(error); }); }Y en el archivo addPeople.php tengo esto:
$con = mysqli_connect($host, $user, $password,$dbname); $method = $_SERVER['REQUEST_METHOD']; $request = explode('/', trim($_SERVER['PATH_INFO'],'/')); if (!$con) { die("Connection failed: " . mysqli_connect_error()); } $_POST = json_decode(file_get_contents("php://input"),true); echo $_POST['name']; $name = $_POST["name"]; $email = $_POST["surname"]; $country = $_POST["age"]; $sql = "insert into tabella1 (name, surname, age) values ('$name', '$surname', '$age')"; $result = mysqli_query($con,$sql); if (!$result) { http_response_code(404); die(mysqli_error($con)); } else { $con->close(); }De reaccionar no obtengo errores, lo que significa que no tengo errores de sintaxis, pero obtengo el error:
Cannot POST /src/api/addPeople.phpTengo un segundo pequeño problema. Simplifiqué tanto como pude el archivo .php para encontrar el error, pero la primera idea era crear una clase php con algunas funciones para manejar las solicitudes, estaba pensando en tener una URL como esta "ruta/a/ phpFile/functionName" en el método de publicación de axios, ¿es correcto?
Debe alojar su programa PHP en un servidor web que pueda ejecutar PHP.
El mensaje de error sugiere que está intentando alojarlo en un servidor de desarrollo Webpack (adecuado para alojar aplicaciones React y cualquier archivo estático que forme parte de ellas) o Express.js.
Elija un servidor que admita PHP (como su servidor incorporado o un Apache HTTPD adecuadamente configurado), agregue permisos CORS (que deberán incluir soporte previo al vuelo) y use una URL absoluta en sus argumentos pasados a axios .