PHP: l'appel d'une fonction javascript avec les paramètres de php

Je suis en train d'appeler la fonction JavaScript avec des paramètres qui sont des variables PHP.
J'ai essayé les 2 approches.

  1. l'appel de fonction JavaScript en PHP avec les balises script dans l'echo
    j'.e

    <?php
    echo '<script>initialize('.$lat.','.$lang.','.$zom.');</script>';
    ?>
  2. l'affectation des variables PHP valeurs à des variables JavaScript

     <script> 
    var lat="<?php echo $lat;?>"; 
    var lang="<?php echo $lang; ?>"; 
    var zoom="<?php echo $zoom; ?>"; 
    alert(lat+lang+zoom); 
    initialiser(lat,lang,zoom); 
    </script> 
    

Dans le premier cas, la fonction est appelée comme je l'ai vérifié à partir de la source de la page, mais les paramètres passés sont pas définis.
Et dans le 2ème cas, les valeurs sont correctement enregistrées dans des variables JavaScript, vérifier par alert(), mais la fonction n'est pas appelée.

Voici le code entier:

<!DOCTYPE html>
<html>
<head>
<script src="http://maps.googleapis.com/maps/api/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&sensor=false">
</script>
<?php
if(  isset($_POST['lat']) && isset($_POST['lang']) && isset($_POST['zoom']) && isset($_POST['city'])):
$lat=$_POST['lat']; 
$lang=$_POST['lang'];
$zoom=$_POST['zoom'];
$city=$_POST['city'];
$zom=(int)$zoom;
var_dump($lang);
var_dump($lat);
//var_dump($zoom);
var_dump($zom);
//echo '<script>initialize('.$lat.','.$lang.','.$zom.');</script>';
endif;
?>          
<script>
var lat="<?php echo $lat; ?>";
var lang="<?php echo $lang; ?>";
var zoom="<?php echo $zoom; ?>";
alert(lat+lang+zoom);
initialize(lat,lang,zoom);
</script>
<script>
function initialize(a,b,zom){        
if (!a || !b ||!zom){ 
alert('came on not' +a+b +zom);
//     var centerLoc=new google.maps.LatLng( 33.61701054652337,73.37824736488983);
zoom=16;
}
else
{
alert('came');
var zoom =parseInt(zom);
var centerLoc=new google.maps.LatLng(a,b);
}
var mapProp = {
center:centerLoc,
zoom:zoom,
//mapTypeId:google.maps.MapTypeId.ROADMAP
mapTypeId:google.maps.MapTypeId.SATELLITE
};  
var map=new google.maps.Map(document.getElementById("googleMap") ,mapProp);
marker=new google.maps.Marker({
position:centerLoc,
title:'Click to zoom'
});
google.maps.event.addListener(marker,'click',function() {
map.setZoom(map.getZoom()+1);
map.setCenter(marker.getPosition());
});
marker.setMap(map);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body style= "background-color:gainsboro;">
<form method="POST"  action="myPage.php" >
Enter latitude:     <input type ="text" name="lat" id="lat" / ><br/>
Enter longitude:    <input type ="text" name="lang"  id="lang"/ ><br/>
Enter City Name:    <input type="text" name="city" id="city"/><br/>
Enter Zoom level:   <input type ="text" name="zoom"  id="zoom"/ ><br/>
<input type="button" value ="Perview" onclick=" initialize(
document.getElementById('lat').value,
document.getElementById('lang').value,
document.getElementById('zoom').value)"/>
<input type="Submit"  value="Save" />
</form>
<center><div id="googleMap"  style="width:1000px;height:500px;"></div></center>
</body>
</html>
Vérifiez la console JavaScript pour les erreurs.
Lorsque vous exécutez echo '<script>initialize('.$lat.','.$lang.','.$zom.');</script>';, ce que vous obtenez dans le code source de la page générée?
initialiser(30,70,5);
Essayez de déboguer votre js - par exemple, à l'aide de la console de Chrome
Faire appel de cette fonction, ou elle "existe"? Vous auriez peut-être besoin de l'appeler dans body onload, something onclick etc.

OriginalL'auteur Rabeel | 2013-03-24