好吧,所以在尝试找出如何将我保存在localStorage中的某些数据传递到我编写的php脚本时遇到了一些问题,因此我可以将其发送到服务器上的数据库中。 我确实早些时候找到了一些代码,( https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest )看起来可以正常工作,但是我没有运气。

这是代码,我在其中保存数据,而不是尝试通过phpscript传递数据

function getLocation() {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(initialize, showError, takeSnap);
        }
        else {
            alert("Geolocation is not supported by this browser.");
        }
    }

function initialize(position) {
        var lat = position.coords.latitude,
            lon = position.coords.longitude;

        var mapOptions = {
            center: new google.maps.LatLng(lat, lon),
            zoom: 14,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            mapTypeControl: true
        }

        var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
        var marker = new google.maps.Marker({
            position: new google.maps.LatLng(lat, lon),
            map: map,
            title: "Current Location"
        });
    }

function showError(error) {
        switch (error.code) {
            case error.PERMISSION_DENIED:
                alert("User denied the request for Geolocation.");
                break;
            case error.POSITION_UNAVAILABLE:
                alert("Location information is unavailable.");
                break;
            case error.TIMEOUT:
                alert("The request to get user location timed out.");
                break;
            case error.UNKNOWN_ERROR:
                alert("An unkown error occurred.");
                break;
        }
    }

function storeLocal(position) {
        if (typeof (Storage) !== "undefined") {
            var lat = position.coords.latitude,
                lon = position.coords.longitude;

            localStorage.latitude = lat;
            localStorage.longitude = lon;
        }
        else {
            alert("Your Browser doesn't support web storage");
        }

        return
    }

    function snapShot() {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(storeLocal, showError);
        }
        else {
            alert("Geolocation is not supported by this browser.");
        }

        var oReq = new XMLHttpRequest();
        oReq.onload = reqListener;
        oReq.open("post", "snap.php?lat=" + localStorage.latitude + "&lon=" + localStorage.longitude, true);
        oReq.send();            
    }

    function reqListener() {
        console.log(this.reponseText);
    }

这是我写的将值保存到数据库中的脚本

    <?php
    // Connecting to the database
    mysql_connect("localhost", "username", "password");
    mysql_select_db("db_name");

    $latitude = mysql_real_escape_string($_GET["lat"]);
    $longitude = mysql_real_escape_string($_GET["lon"]);

    // Submit query to insert new data
    $sql = "INSERT INTO locationsTbl(locID, lat, lon ) VALUES( 'NULL', '". $latitude ."', '". $longitude . "')";
    $result = mysql_query( $sql );

    // Inform user
    echo "<script>alert('Location saved.');</script>";

    // Close connection
    mysql_close();
    ?>

===============>>#1 票数:1 已采纳

怎么样:

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

(您也有localStorage.lon而不是.longitude

由于值(字符串)在变量中,因此您需要将它们串联起来,而不是将它们放在字符串中。

另外,从语义上讲,由于您似乎要将这些东西传递给PHP以保存到数据库,因此从语义上讲,您应该使用POST请求...该请求与AJAX请求的处理方式不同。

在您的PHP中,您需要使用:

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

实际获取与GET请求一起发送的值。 尽管应避免使用这些值以避免SQL注入。

另外,我不确定为什么要设置AJAX请求的onload属性。 相反,使用onreadystatechange属性...类似:

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

.readyState属性引用其状态,其中4表示已完成(响应已返回)。 .status属性是指HTTP状态代码。 通常200 400之间是好的。 我知道我看到人们检查200 (而不是范围)。

更新:

为了在请求中传递POST参数,请不要将其附加到URL上,而应在.send()方法中传递它们。 这是您的代码的示例:

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

并使用PHP检索它们,您可以使用:

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

===============>>#2 票数:0

您有代码错误

它应该是oReq.onload = reqListener; oReq.open(“ get”,“ snap.php?lat =” + localStorage.latitude +“&lon =” + localStorage。lon,true); oReq.send();

  ask by RenegadeScar translate from so

未解决问题?本站智能推荐:

1回复

使用Google Maps API和数据库Javascript MySQL PHP中的坐标创建线

我想创建一个导航类型的应用程序,其中我必须画一条线,其中起点和终点存储在数据库中。 这些线从起点开始到固定点(以代码给出),然后在终点处终止。 在这里,我从数据库中获取数据并将其存储在矩阵($ locations)中。 连接正确,数据也存储在矩阵中。 这是为JavaScri
2回复

从PHP MySQL进行地理编码的动态标记

我正在尝试从数据库中获取坐标的值,然后在所有保存的位置上放置一个标记。 我没有显示任何错误,但没有在地图上放置标记。 任何帮助将不胜感激。
1回复

地址解析不适用于php MySQL提交表单

我想发生的事情:用户在表单上输入客户数据(名称,地址等),单击“提交”按钮,并且用户信息已更新为msql数据库表。 还有一个映射页面,该页面调用mysql数据库并更新该映射(不包含在代码中,因为该页面可以正常工作)。 问题:此页面上的Gecode无法正常工作。 我想对经纬度/经纬度进行
2回复

使用.php MySQL添加自定义.png标记以进行映射

我正在使用以下代码向地图添加标记,效果很好,但是我想在数据库中为标记图标添加另一个字段,以便为数据库中的每个条目显示自定义标记图标。 有谁知道我需要“回显”什么才能在查询数据库时为每个项目创建自定义.png标记?
1回复

Google Map不显示在PHP / MySQL页面中

我有一个PHP页面,可在Google Map的信息窗口中显示MySQL数据。 上次我检查该页面时显示的很好,但现在不会绘制地图。 有人可以向我指出错误的正确方向吗? 这是网址: http : //tinyurl.com/8jy78xq
1回复

每15秒将用户地理位置保存到MySQL

我需要能够在标记移动时以15秒的时间间隔连续存储用户的地理位置(尽管纬度和经度)。 目前,该应用仅在页面加载时存储用户的地理位置 我想知道如何将我的代码重构为数据来保持这种状态。 heatmap.php personlocator.php
1回复

在Google Maps的HTML / JavaScript变量中使用PHP回显的结果

长期的读者,第一次的海报。 希望大家能帮助我。 我绝对是PHP和JavaScript的新手,但是对HTML的了解很深,并且对Google Maps有过一定的经验,但这对我来说是一种新方法。 这也是我第一次使用V3 Google Maps API。 背景资料 我正在尝试为我的公司
1回复

从数据库自动在Google Maps上添加标记

我已经按照本教程在GMaps页面上从数据库绘制标记。 我有两种类型的标记(绿色:数据库上的标记状态等于0;红色:数据库上的标记状态等于1),并且每次在数据库状态列上进行更改时,我都需要更新标记图标。 每当数据库上有新行时,我还想修改此代码以在地图上添加标记。 问题是我无法刷新整个页面,只能
2回复

使用实时数据在谷歌地图上移动标记

数据库表每20秒更新一次新数据。 我不想用新的lat&lang在地图上移动标记。 我尝试每30秒运行一次查询,以获取表的最后一条记录并更新标记的位置。 映射加载,显示标记并调用javascript函数。 但是标记不会移动。 请帮忙..
1回复

如何在mysql查询中的选定对角线区域之间准确查找数据

这些是我的“选定对角线”点的坐标,当选定的点数更多时,这些坐标也会更多。 下面是我当前的mysql查询没有给我选定的对角线之间的完美结果。任何帮助?