我想从JavaScript传递变量到PHP。我已经读过没有AJAX调用就无法执行此操作,或者将其放在JavaScript中的URL中,然后使用$_GET
。问题是我的变量是在初始化时创建的(在窗口加载时),所以如果我尝试$_GET
,我会陷入无限循环。
变量为lati
和longi
。
这是我的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));
答案 0 :(得分: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>