Ajax.responseText пуст

У меня есть веб-сайт, и я хочу нанести несколько точек на карту.

Мои очки хранятся в базе данных, и я вызываю их из 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.info(lat);
    }
});

// envoi de la requête
ajax.send();

А здесь "lat" пусто, а значение в PHP все еще отображается на моем веб-сайте. Мне кажется, что AJAX не знает, что нужно брать из файла PHP, поэтому ничего не требуется.

Кто-нибудь знает, почему мой ajax.responseText пуст? Спасибо

РЕДАКТИРОВАТЬ

Я упомянул только те части кода, в которых есть проблемы. Connexion.php вызывается из файла index.php, который строит карту.

<!DOCTYPE html>
<html>
  <head>
    <!-- appel du style de la librairie leaflet-->
    <link rel = "stylesheet" href = "https://unpkg.com/[email protected]/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/[email protected]/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>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
79
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ваш PHP-код никогда не звонкиconnectBdd, он просто определяет его. Вам нужно назвать это, например:

connectBdd();

в конце файла.

Также обратите внимание, что ваш вызов XHR вызывает connexion.php, но ваш комментарий в верхней части блока кода говорит, что он называется connection.php.

Если только «... и значение PHP все еще отображается на моем веб-сайте». не означает, что вы видите что-то, что указывает на то, что код в файле PHP действительно запущен, и в этом случае вы должны оставить часть файла в вопросе (или, возможно, это ошибка наблюдения?).

T.J. Crowder 27.04.2018 17:14

Действительно, эта функция вызывается моим основным файлом, извините. Я отредактировал свой пост, добавив в него файл "index.php". Более того, это "connexion.php", вы правы. Так что проблема не отсюда /

J.Delannoy 02.05.2018 10:01
Ответ принят как подходящий

Ну, я все смешивал ... Я хочу добавить переменные 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 !");
}

Другие вопросы по теме