sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo pasar los datos web guardados de localStorage a un script php?

¿Qué tal:

oReq.open("get", "snap.php?lat=" + localStorage.latitude + "&lon=?" + localStorage.longitude, true);

(también tenía localStorage.lon en lugar de .longitude )

Dado que los valores (cadenas) están en variables, debe concatenarlos, no ponerlos en la cadena.

Además, dado que parece estar pasando estas cosas a su PHP para guardarlas en la base de datos, semánticamente hablando, debería usar una solicitud POST... que se maneja de manera diferente con las solicitudes AJAX.

En tu PHP, necesitas usar:

$latitude = $_GET["lat"];
$longitude = $_GET["lon"];

para obtener realmente los valores que se enviaron con la solicitud GET. Aunque estos valores deben escaparse para evitar la inyección de SQL.

Además, no estoy seguro de por qué está configurando onload propiedad de la solicitud AJAX. En su lugar, utilice el onreadystatechange propiedad... algo como:

oReq.onreadystatechange = function () {
    if (oReq.readyState === 4) {
        if (oReq.status > 199 && oReq.status < 400) {
            console.log("successful response");
        } else {
            console.log("failed response: " + oReq.status);
        }
    }
};

El .readyState propiedad se refiere a su estado, donde 4 significa que está hecho (la respuesta ha regresado). El .status La propiedad hace referencia al código de estado HTTP. Normalmente entre 200 &400 es bueno. Sé que he visto gente solo buscar 200 (no un rango).

ACTUALIZACIÓN:

Para pasar parámetros POST en la solicitud, no los agrega a la URL; los pasa en .send() método. Aquí hay un ejemplo con su código:

oReq.open("POST", "snap.php", true);
oReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
oReq.send("lat=" + encodeURIComponent(localStorage.latitude) + "&lon=" + encodeURIComponent(localStorage.longitude));

Y para recuperarlos en PHP, usaría:

$latitude = $_POST["lat"];
$longitude = $_POST["lon"];