Estoy usando fetch para enviar datos a un script PHP. El único problema es que primero inserta datos vacíos y luego los correctos. Estoy enviando una cadena JSON que luego se decodifica con PHP.
Probé el script con Postman y funciona bien allí.
Código Java-Script:
async function uploadImage() { let url = "http://localhost/upload_image.php"; navigator.geolocation.getCurrentPosition(writePosition); let dataJSON = {"Koordinate_X":3, "Koordinate_Y":1, "Kategorie":1, "Bild":"Es klappt aus der App"}; fetch(url, { method: 'POST', // or 'PUT' /*headers: { 'Content-Type': 'application/json', }, REMOVED*/ body: JSON.stringify(dataJSON) }) };Código HTML:
<button on:click={uploadImage}>Upload</button>Código PHP:
<?php header('Access-Control-Allow-Origin: http://localhost:5173'); header('Access-Control-Allow-Headers: Content-Type, X-Auth-Token, Authorization, Origin'); header('Access-Control-Allow-Methods: POST, PUT'); $data = json_decode(file_get_contents('php://input'), true); print_r($data); //path to database file $database_path = $_SERVER["DOCUMENT_ROOT"] . "\WoIstMein.accdb"; //check file exist before we proceed if (!file_exists($database_path)) { die("Access database file not found !"); } //create a new PDO object $database = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=$database_path;"); try{ $sql = 'INSERT INTO Gegenstaende (Koordinate_X, Koordinate_Y, Kategorie, Bild) VALUES (:koord_x,:koord_y,:kategorie,:bild);'; $statement = $database->prepare($sql); $result = $statement->execute(array('koord_x' => $data["Koordinate_X"],'koord_y' => $data["Koordinate_Y"],'kategorie' => $data["Kategorie"], 'bild' => $data["Bild"])); $database = null; }catch(PDOException $e){ echo $e->getMessage(); } ?>EDITAR
Gracias a HB obtuve la respuesta. Revisé la información de la red y vi que mi aplicación estaba enviando dos solicitudes. Debido a la etiqueta de encabezados que envié en el comando fetch(). Así que fetch primero hizo una verificación previa para verificar las opciones y luego ejecutó el comando de publicación real. Entonces mi solución fue que eliminé los "encabezados" de fetch.