从隐藏的<input />获取值并在jQuery函数中使用

时间:2016-02-15 20:58:24

标签: php jquery html google-maps

我在我的网站上使用gmaps.js作为交互式地图。该库允许您使用long / lat坐标添加新的地图标记。这些存储在我的数据库中,我检索它(以及其他数据)并像这样回显这些数据:

<input id="lat" type="hidden" value="'.$lat.'"/>
<input id="long" type="hidden" value="'.$long.'"/>

还有其他数据被回显,这就是为什么你看不到任何<?php ?>标签 - 这不是语法错误!

当我检查网站前端的元素时,我可以看到相应的值已成功回显。

我遇到的问题是将<input>标记中存储的值存入我的jQuery函数。

我想在这里得到每个long和lat值:

map.addMarker({
  lat: $lat,
  lng: $long,
  title: 'Lima',
  }
});

但据我了解,将PHP直接回调为jQuery函数是不好的做法。

因此,我试图做到以下几点:

$(document).ready(function(){

 $("lat").val();
 $("long").val();

 $.each( markers, function( index, value ) {

     var markers = {
            lat: value.lat,
            lng: value.long,
        }

 });

});

你有什么建议?

提前感谢您的时间!

3 个答案:

答案 0 :(得分:2)

首先,在JQuery中按ID选择元素,你需要在html id

之前插入#
 $("#lat").val();
 $("#long").val();

然后,我不理解您的代码,但是我可以看到上面的两行没有做任何事情,从输入元素中获取价值,但不要将它们保存到任何变量。< / p>

答案 1 :(得分:1)

我不是最先进的程序员,但我知道一个更清洁的解决方案。

<强> JSON 我知道您使用PHP来检索您的协调,并且您希望以Javascript可以理解的方式显示您的结果。嗯,有一种更好的语言交流方式,它叫做JSON。您可以在PHP中使用它:

echo json_encode(["lat"=>$lat,"long"=>$long]);

然后你可以在Javascript中检索它:

var LatLong = JSON.parse('{"lat":"lat","lon":"long"}');

然后,您可以使用普通的Javascript来检索Lat和Long。只需通过LatLong.lat或类似的东西。

<强> AJAX 通常我会使用AJAX来做这些事情,但我想你没必要这样做。

最后,代码

这是一个如何在没有AJAX

的情况下做到这一点的例子
var parseString = '{"lat":"lat","long":"long"}'; // <-- Your PHP echo
var LatLong = JSON.parse(parseString);

    map.addMarker({
      lat: LatLong.lat,
      lng: LatLong.long,
      title: 'Lima',
      }
    });

答案 2 :(得分:0)

我假设您可以通过PHP访问数据库中的lng / lat数据。那么,你可以通过json_encode()将它传递给你的客户端javascript。下面的代码假设您有一个数据库中的行对象数组。

   <script>
   // Created data from PHP
   var mapData = <?php echo (!empty($data)) ? @json_encode($data) : '[]'; ?>;
   </script>

然后继续使用$ .each()等

继续