Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je transmettre les données Web enregistrées de localStorage à un script php ?

Que diriez-vous :

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

(vous aviez aussi localStorage.lon au lieu de .longitude )

Puisque les valeurs (chaînes) sont dans des variables, vous devez les concaténer, pas les mettre dans la chaîne.

De plus, puisque vous semblez transmettre ces éléments à votre PHP pour les enregistrer dans la base de données, sémantiquement parlant, vous devriez utiliser une requête POST... qui est gérée différemment avec les requêtes AJAX.

Dans votre PHP, vous devez utiliser :

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

pour obtenir réellement les valeurs qui ont été envoyées avec la requête GET. Bien que ces valeurs doivent être échappées pour éviter l'injection SQL.

De plus, je ne sais pas pourquoi vous définissez le onload propriété de la requête AJAX. Au lieu de cela, utilisez le onreadystatechange propriété... quelque chose comme :

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);
        }
    }
};

Le .readyState propriété fait référence à son état, où 4 signifie que c'est fait (la réponse est revenue). Le .status La propriété fait référence au code d'état HTTP. Normalement entre 200 &400 est bon. Je sais que j'ai vu des gens seulement vérifier 200 (pas une plage).

MISE À JOUR :

Afin de transmettre les paramètres POST dans la requête, vous ne les ajoutez pas à l'URL - vous les transmettez dans le .send() méthode. Voici un exemple avec votre code :

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));

Et pour les récupérer en PHP, vous utiliserez :

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