Как обновить несколько div, содержащих PHP-запросы, используя ajax - PullRequest
0 голосов
/ 12 мая 2019

Я создал скрипт календаря встреч и хочу отображать результаты за любой день на карте Google и в таблице ниже, не обновляя всю страницу.В настоящее время, используя ajax, карта прекрасно обновляется, а таблица - нет.

Когда дата щелкается в календаре, она записывается с помощью javascript в скрытое поле формы, затем при нажатии кнопки обновления (submit) ajax в заголовке отправляет форму в фоновом режиме, чтобы перезаписать $Обновите переменную, обновите карту div и таблицу div.

В настоящее время переменная обновляется в сеансе, запускается скрипт для обновления файла XML, и календарь успешно обновляется, показывая эти данные XML.Однако таблица div не обновляется.Если я вручную обновляю всю страницу, новые результаты отображаются успешно, поэтому она выбирает обновленную переменную, но не обновляется через ajax.

Я понимаю, что это, вероятно, связано с тем, что ajax является стороной клиента и стороной php-сервера, поэтомузапросы php не выполняются, но я также попытался использовать file_get_contents (который работает для сценария генерации xml) внутри div для выполнения этих запросов без загрузки всей страницы, но это просто ничего не показывает, так что я думаю, что упустил что-то фундаментальноеи, возможно, очень просто!

--------- ajax in head to run update script and reload divs --------

<!-- silently submit the updatedate form to update the session variable.
Then reload the map and table divs using this new variable -->
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
  $(function () {
    $('#update').on('submit', function (e) {
      // stop the page from reloading
      e.preventDefault();
      // but submit the form
      $.ajax({
        type: 'post',
        url: 'actions/updatedate.php',
        data: $('#update').serialize(),
        success: function () {
          $("#map-outer").load("../map.php");
          $("#tbl-outer").load("../table.php");
        }
      });
    });
  });
</script> 


--------- main page --------

<div>calendar content here</div>

<div>customer details form here</div>

<div class="clear" style="text-align: left;">
    <!-- set default then let script overwrite -->
    <?php $updatedate = date('Y-m-d'); ?>
    <!-- run form (via ajax in head) to update variable and write to session -->
    <form id="update" method="post">
        <input type="hidden" name="updatedate" id="updatedate" />
        <input type="submit" name="submit" value="update map and table" />
    </form>
    <!-- update variable form session -->
    <?php $updatedate = $_SESSION['updatedate']; ?>
    <br />
</div>

<div id="map-outer" class="twocol1">
    <?php include "../map.php" ?>  <!-- this page runs a script to pull the db values and write them to xml, then displays google map code -->
    <br /><br />
</div>

<div id="tbl-outer" class="twocol2">
    <?php include "../table.php" ?> <!-- this page pulls the db values and display them in a table -->
</div>



--------- map.php page --------

<?php
// silently run the db to xml script before loading the map //
file_get_contents("admin/actions/dbtoxml.php");
?>

<div id="map"></div>
<script> .....  script to show google map with custom markers .....  </script>



--------- table.php page --------

<h2>Morning</h2>

<?php
    $sql = "SELECT * FROM wasps_appointments WHERE date = '$updatedate' AND time = 'Morning' AND block = 0 AND completed = 0 ORDER BY date ASC";
    $result = $connection->query($sql);
?>
<?php include 'admin/includes/view-table-today.php'; ?>

<br /><br />

<h2>Afternoon</h2>

<?php
    $sql = "SELECT * FROM wasps_appointments WHERE date = '$updatedate' AND time = 'Afternoon' AND block = 0 AND completed = 0 ORDER BY date ASC";
    $result = $connection->query($sql);
?>
<?php include 'admin/includes/view-table-today.php'; ?>

Кто-нибудь может указать мне правильное направление?

Большое спасибо, Хелен

1 Ответ

0 голосов
/ 13 мая 2019

Я исправил это сейчас.Страница table.php не загружалась с использованием существующего подключения к базе данных mysql, поэтому мне пришлось использовать другое.

Может кто-нибудь сказать мне разницу между использованием $ connection = new mysqli (DB_HOST, DB_USER, DB_PASS,DB_NAME);и $ connection = mysqli_connect (DB_HOST, DB_USER, DB_PASS);$ db_selected = mysqli_select_db ($ connection, DB_NAME);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...