Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso passar dados da web localStorage salvos para um script php?


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

(você também tinha localStorage.lon em vez de .longitude )

Como os valores (strings) estão em variáveis, você precisa concatená-los, não colocá-los na string.

Além disso, como você parece estar passando essas coisas para o seu PHP para salvar no banco de dados, semanticamente falando, você deve usar uma solicitação POST... que é tratada de maneira diferente com solicitações AJAX.

No seu PHP, você precisa usar:
$latitude = $_GET["lat"];
$longitude = $_GET["lon"];

para realmente obter os valores que foram enviados com a solicitação GET. Embora esses valores devam ser escapados para evitar injeção de SQL.

Além disso, não sei por que você está configurando o onload propriedade da solicitação AJAX. Em vez disso, use o onreadystatechange propriedade... 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);
        }
    }
};

O .readyState propriedade refere-se ao seu estado, onde 4 significa que está feito (a resposta voltou). O .status A propriedade refere-se ao código de status HTTP. Normalmente entre 200 &400 é bom. Eu sei que vi pessoas somente verifique se há 200 (não um intervalo).

ATUALIZAÇÃO:

Para passar parâmetros POST na solicitação, você não os anexa à URL - você os passa no .send() método. Segue um exemplo com seu 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));

E para recuperá-los em PHP, você usaria:
$latitude = $_POST["lat"];
$longitude = $_POST["lon"];