Javascript 为什么不是';我的谷歌地图Lat/Lng变量没有存储任何东西吗?

Javascript 为什么不是';我的谷歌地图Lat/Lng变量没有存储任何东西吗?,javascript,php,html,mysql,sql,Javascript,Php,Html,Mysql,Sql,我目前正在为大学做一个项目,我正试图在我的网站上实现一个谷歌地图 ReportStolenBike.js: var mapCenter = new google.maps.LatLng(51.8979988098144,-2.0838599205017); var geocoder = new google.maps.Geocoder(); var infowindow = new google.maps.InfoWindow(); var myMap; var marker; fu

我目前正在为大学做一个项目,我正试图在我的网站上实现一个谷歌地图

ReportStolenBike.js:

    var mapCenter = new google.maps.LatLng(51.8979988098144,-2.0838599205017);
var geocoder = new google.maps.Geocoder();
var infowindow = new google.maps.InfoWindow();
var myMap;
var marker;


function initialize(){
    var mapOptions = {
        zoom: 15,
        center: mapCenter
    };

    myMap = new google.maps.Map(document.getElementById("mapInput"), mapOptions);

    marker = new google.maps.Marker({
        map: myMap,
        position: mapCenter,
        draggable: true 
    });     

    function markerDragged() {
        var selectedPos = {'latLng': marker.getPosition()};
        geocoder.geocode(selectedPos, showAddressInInfoWindow);
    }        

    google.maps.event.addListener(marker, 'dragend', markerDragged);


    function showAddressInInfoWindow(results) {
        if (results[0]) {
            infowindow.setContent(results[0].formatted_address);
            infowindow.open(myMap, marker);
        }
    }         
}

google.maps.event.addDomListener(window, 'load', initialize);

$('#formReportStolen').on('submit', function(e) {
    var formData = new FormData(this);
    var lat = marker.getPosition().lat();
    var lng = marker.getPosition().lng();

    formData.append("lat", lat);
    formData.append("lng", lng);

    e.preventDefault();
    $.ajax({
        url: "PublicReportStolenDAO",
        method : "POST",
        data: formData,
        contentType: false,
        cache: false,
        processData: false,
        success:function(echoedMsg) {
            if (echoedMsg == "True") {
                alert("Successfully reported.");
            }
        }
    });
});
因此,在java脚本类中,我显示了我的google地图,并试图获取用户当前的位置。“我的地图”有一个弹出窗口,显示我的地图确实参考了纬度和经度,但当试图将它们存储到我的sql数据库中时,没有存储任何内容

PublicReportStolenDAO.php

  <?php
function StolenReg(){

    $bikeID = $_POST['txtBikeID'];
    $date = $_POST['txtDateofTheft'];
    $lat = $_POST['lat'];
    $lng = $_POST['lng'];

    include "../../include/config.php";

        $verifyFuncBike = "SELECT email FROM `tbl_user` WHERE email = '$email'";
        $resultBike = mysqli_query($connection,$verifyFuncBike);
        $rowBike = mysqli_fetch_array($resultBike,MYSQLI_ASSOC);
        $countBike = mysqli_num_rows($resultBike);

        if($countBike == 1) {

            $sql = "INSERT INTO `tbl_stolen`(BikeID, Date, Lat, Lng)".
            " VALUES ".
            "('$bikeID', '$date', '$lat', '$lng')";

            if(mysqli_query($connection, $sql)) {
            echo "Report successfully sent, please return back to the site.";
                echo $lat;
                echo $lng;
            } else {
                echo mysqli_error($connection);
            }

        }else {

            echo "Error, please return back to the site and try again.";
        }



        mysqli_close($connection);
    } 

stolenReg();

?>

我不认为这是最好的答案。但是在你的代码使用中

var lat = marker.getPosition().lat();
这不是获取坐标的函数。要获得坐标,您需要进行地理定位。所以应该是这样

var lat = position.coords.latitude
var lat = position.coords.longitude
为了确保您的位置,您可以使用此

if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
    var lat = position.coords.latitude
    var lat = position.coords.longitude
    $.ajax({
        do your ajax
    });      
});
}

对不起,我的语言不好。希望这对您有所帮助。

您的代码易受攻击。您应该通过或驱动程序将准备好的语句与绑定参数一起使用。有一些很好的例子。是的,我知道,这个网站不会公开发布给任何人。感谢您确保
$lat
$long
不是空的。我如何检查?考虑到它不是echo,使用java脚本在控制台中显示文本的功能是什么?“本网站不会公开发布给任何人”-这并不是所有准备好的语句都可以帮助您。例如,如果有人发送包含单引号或以反斜杠结尾的值,则向数据库添加未扫描的数据可能会中断您的查询。所有SQL注入都不是故意的,它似乎根本没有改变任何东西。它仍然没有在lat或lng变量中存储任何内容。那么您的错误是什么?如果您使用chrome,它将在开发者工具上显示一个错误