javascript - 将变量从 html 传递到 javascript 再到 php

标签 javascript php html database geocoding

我正在尝试对用户提交的地址进行地理编码并将其存储到数据库中。该表单调用一个 php 文件,其中 javascript 检索地址并对其进行地理编码。然后将 lat 和 lng 值传递给 php 并存储在数据库中,但是数据库中的唯一值是零。

HTML 文件:

 <html>
  <body>
    <form action="registerEvent.php" id="form" method="post">       
        <input id="address" name="address" placeholder="Adrese" type="text">                    
        <button type="submit" id="submit">Send</button>             
    </form>
  </body>
</html>

注册事件.php:

    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script>
<script>
var geocoder;
var inputLat;
var inputLng;

function codeAddress() {

    geocoder = new google.maps.Geocoder();

  var address = document.getElementById('address').value;
  geocoder.geocode( { 'address': address}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {

    var inputLat = event.latLng.lat(); 
    var inputLng = event.latLng.lng();    

    } else {
      alert('Geocode was not successful for the following reason: ' + status);
    }
  });

}

function passvariable() { 
  window.location.href = "registerEvent.php?lat=" + inputLat;
  window.location.href = "registerEvent.php?lng=" + inputLng; 
}

    codeAddress();
    passvariable();

</script>



<?php
    require("dbinfo.php");

    $connection=mysqli_connect ('localhost', $username, $password);
if (!$connection) {
  die('Not connected : ' . mysql_error());
}

$db_selected = mysqli_select_db($connection, $database);
if (!$db_selected) {
  die ('Can\'t use db : ' . mysql_error());
}

    $lat =$_GET['inputLat']; 
    $lng =$_GET['inputLng']; 

    $sql = "INSERT INTO sometable (lat, lng)
VALUES ('$lat', '$lng')";

    if (!mysqli_query($connection,$sql)) {
      die('Error: ' . mysqli_error($connection));
    };

    mysqli_close($connection);
?>

最佳答案

您正在调用 window.location.href 两次,PHP 部分中的变量似乎不正确($_GET['inputLat'] 而不是 lat$_GET['inputLong'] 而不是 lon)

如果HTML文件是一个单独的文件,那么你需要用不同的方式获取地址: 替换

var address = document.getElementById('address').value;

var address = "<?php echo $_POST['address']; ?>"

JS 函数应该看起来更像这样

<script src="https://maps.googleapis.com/maps/api/jsv=3.exp&signed_in=true">
</script>
<script> 
var geocoder;
var inputLat;
var inputLng; 

function codeAddress() {
  geocoder = new google.maps.Geocoder();
  var address = document.getElementById('address').value;
  geocoder.geocode( { 'address': address}, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    var inputLat = event.latLng.lat(); 
    var inputLng = event.latLng.lng();    
    window.location.href = "registerEvent.php?lat=" + inputLat + "&lng=" + inputLng;
    } else {
      alert('Geocode was not successful for the following reason: ' + status);
    }
  });

}
codeAddress();
</script>

PHP 部分:

    // ...
    $lat =$_GET['lat']; 
    $lng =$_GET['lng']; 

    if (!empty($lat) && !empty($lng)) {    
       $sql = "INSERT INTO sometable (lat, lng) VALUES ('$lat', '$lng')";
       if (!mysqli_query($connection,$sql)) {
         die('Error: ' . mysqli_error($connection));
       };
    }

    mysqli_close($connection);

如果所有内容都在同一个文件中,则表单按钮应更改为如下所示:

<button type="button" id="submit" onclick="codeAddress()">Send</button>    

关于javascript - 将变量从 html 传递到 javascript 再到 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29493062/

相关文章:

javascript - 鼠标向上 javascript 事件未触发图像控件

jquery - 默认关闭 Bootstrap 导航栏

javascript - 在 Polymer 1.0 模板中切换 CSS 类?

javascript - 如何根据div标签图像自动调整图像大小

php - 使用 codeigniters 事件记录插入非文字值

javascript - 即使在脚本之前包含 app.js 之后,jquery 也无法正常工作

javascript - AngularJS - 刷新页面后丢失html

javascript - 如何使用同名的 "data-target"属性创建多个弹出窗口

javascript - 如何使用两条不同的路线渲染Handlebars文件?

php - 使用 php 获取多个复选框名称/id