我有一个网站,我想在地图上绘制一些点。
我的观点在数据库中,我从PHP调用它来获取数据集。 那部分工作正常:
connexion.php
<?php
function connectBdd(){
$host_bdd='localhost';
$name_bdd='TBMigrateurs';
$user_bdd='postgres';
$pass_bdd='eptbmig';
try{
$bdd = new PDO ("pgsql:host=".$host_bdd.";dbname=".$name_bdd."", "".$user_bdd."", "".$pass_bdd."") or die(print_r($bdd->errorInfo()));
$bdd->exec("SET NAMES utf8");
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}
catch(Exeption $e){
die("Erreur!".$e->getMessage());
}
// On récupère les données
$reponse = $bdd->query('SELECT * FROM ouvrages');
//On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
$latitude[] = $donnees['xl93'];
$longitude[] = $donnees['yl93'];
}
$reponse->closeCursor(); // Termine le traitement de la requête
echo (string)$latitude[5];
//echo $longitude[0];
}
?>
我的第5点的纬度是在页面上正确绘制的。 现在我想用Javascript抓住它,感谢Ajax:
map.js
// création de l'objet xhr
var ajax = new XMLHttpRequest();
// destination et type de la requête AJAX (asynchrone ou non)
ajax.open('POST', 'connexion.php', true);
ajax.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
ajax.addEventListener('load', function(e) {
// si l'état est le numéro 4 et que la ressource est trouvée
if(ajax.readyState == 4 && ajax.status == 200) {
// le texte de la réponse
var lat = ajax.responseText;
console.log(lat);
}
});
// envoi de la requête
ajax.send();
这里&#34; lat&#34;是空的,PHP中的值仍然在我的网站上。 对我来说,似乎AJAX不知道从PHP文件中应该采取什么,所以它什么都不需要。
有人知道为什么我的ajax.responseText为空吗? 谢谢
修改
我只提到了代码中有问题的部分。 &#34; connexion.php&#34;是从&#34; index.php&#34;文件,即绘制地图的文件。
<!DOCTYPE html>
<html>
<head>
<!-- appel du style de la librairie leaflet-->
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.0.2/dist/leaflet.css" />
<!-- appel du style créé sur le poste-->
<link rel="stylesheet" href="accueil.css" />
<!-- appel de la librairie leaflet-->
<script src="https://unpkg.com/leaflet@1.0.2/dist/leaflet.js"></script>
<!-- appel du js créé sur le poste-->
<script src="map.js"></script>
<!--<script src="leaflet-providers.js"></script>-->
<meta charset="utf-8">
</head>
<body>
<header>
<h1> Tableau de bord de la continuité écologique </h1>
</header>
<div id="mapid">
<!-- la carte-->
</div>
<p>Ici</p>
<div id="pays">Pays </div>
<p> La </p>
<?php
include 'connexion.php';
connectBdd();
?>
</body>
</html>
答案 0 :(得分:0)
您的PHP代码永远不会调用 user
,它只是定义它。你需要打电话,例如:
connectBdd
在文件的末尾。
另请注意,您的XHR呼叫正在调用connectBdd();
,但您在代码块顶部的评论称其为connexion.php
。
答案 1 :(得分:0)
好吧,我正在混合所有内容..我想将PHP变量放入我的javascript文件中。
我尝试用ajax做这个,而ajax将Javascript变量发送给PHP(我想做相反的事情)。
所以它无法运作。如果有人需要,我会发布解决方案。我创建了一个javascript函数,我从PHP调用,我的PHP变量作为参数。
对于每个坐标,我调用绘制地图上一个点的js函数。
connexion.php
// On récupère les données
$reponse = $bdd->query('SELECT * FROM ouvrages');
//On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
//coordonnees de l'ouvrage
$latitude = $donnees['xl93'];
$longitude = $donnees['yl93'];
$impact = $donnees['impact'];
?>
<script type="text/javascript" src="l93_to_wgs84.js"></script>
<script type="text/javascript" src="map.js"></script>
<script type="text/javascript">
affichage_ouvrage(lambert93toWGPS('<?PHP echo $latitude;?>','<?PHP echo $longitude;?>')['latitude'],lambert93toWGPS('<?PHP echo $latitude;?>','<?PHP echo $longitude;?>')['longitude'],'<?PHP echo $impact;?>');
</script>
<?php
}
$reponse->closeCursor(); // Termine le traitement de la requête
}
?>
map.js
function affichage_ouvrage(latitude,longitude,impact){
if (impact == 'Faible'){
var ouvrage = L.marker([latitude,longitude],{icon: blueSmallIcon}).addTo(map);
}
else if (impact == 'Moyen'){
var ouvrage = L.marker([latitude,longitude],{icon: greenSmallIcon}).addTo(map);
}
else if (impact == 'Fort'){
var ouvrage = L.marker([latitude,longitude],{icon: orangeSmallIcon}).addTo(map);
}
else if (impact == 'Tres_fort'){
var ouvrage = L.marker([latitude,longitude],{icon: redSmallIcon}).addTo(map);
}
else {
var ouvrage = L.marker([latitude,longitude],{icon: unvisiSmallIcon}).addTo(map);
}
ouvrage.bindPopup("Hi there !");
}