0

我想将变量从 JavaScript 传递给 PHP。我已经读过没有 AJAX 调用就无法做到这一点,或者将其放在 JavaScript 中的 URL 中,然后使用$_GET. 问题是我的变量是在初始化时(在窗口加载时)创建的,所以如果我尝试$_GET我会陷入无限循环。

变量是latilongi

这是我的 JavaScript(没有 AJAX 调用,因为它创建了一个无限循环等):

var map;

 function initialize() {
    var mapOptions = {
      zoom: 12,
      streetViewControl: false,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map-canvas"),
        mapOptions);


     // Try HTML5 geolocation
  if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
      var pos = new google.maps.LatLng(position.coords.latitude,
                                       position.coords.longitude);

  var lati = position.coords.latitude;
  var longi = position.coords.longitude;


       map.setCenter(pos);

    }, function() {
      handleNoGeolocation(true);
    });
  } else {
    // Browser doesn't support Geolocation
    handleNoGeolocation(false);
  }

  var length = locationsArray.length, element=null;
  for (var i = 0; i <length; i++)
  {
    element= locationsArray[i];

    var element1 = element.split(";");
    var posi = new google.maps.LatLng(element1[0],element1[1]);
    var marker = new google.maps.Marker({
    position: posi,
    map: map,
    icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter_withshadow&chld='+i+'|e74c3c|333333',
    url: 'index.php?id='+i+'#eventDetails'
   });
    google.maps.event.addListener(marker, 'click', function() {
    window.location.href = this.url;
    });
  }
}
google.maps.event.addDomListener(window, 'load', initialize);  

我想使用该变量的 PHP:

$url="http://build.uitdatabank.be/api/events/search?key=AEBA59E1-F80E-4EE2-AE7E-CEDD6A589CA9&latlng=".$lati.";".$longi."!10km&format=json";
$events= json_decode(file_get_contents($url));
4

1 回答 1

0

只需在您的<head>元素中添加一个脚本标签:

<script type="text/javascript">
window.lati = <?=json_encode($_GET["lati"]);?>;
window.longi= <?=json_encode($_GET["longi"]);?>;
</script>

现在您可以在页面中的 Javascript 中的任何位置访问它

不要忘记在将值直接打印到输出之前验证值(以防止XSS攻击 - 即使该json_encode函数可能有助于防止其中一些攻击(例如 - 如果你的参数是坐标,就像它看起来一样 - 检查他们首先是数字is_numeric功能)

有效性检查的示例:

<?
$lng = null;
$lat = null;
if(isset($_GET["longi"]) && is_numeric($_GET["longi"])){
    $lng = $_GET["longi"];
}
if(isset($_GET["lat"]) && is_numeric($_GET["lat"])){
    $lat = $_GET["lat"];
}
?>

<script type="text/javascript">
window.lati = <?=json_encode($lat);?>;
window.longi= <?=json_encode($lng);?>;
</script>
于 2013-05-18T00:58:18.060 回答