ajax.responseText为空

时间:2018-04-27 15:01:27

标签: javascript php ajax xmlhttprequest

我有一个网站,我想在地图上绘制一些点。

我的观点在数据库中,我从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>

2 个答案:

答案 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 !");
}