Javascript не работает с результатами ответа Ajax - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь реализовать бесконечную прокрутку.нет ошибок в данных по умолчанию на домашней странице, когда поповер работает, когда я нахожу его screenshot of default data with popover, но когда я получаю другие данные из базы данных, он не работает, когда я нахожу его, он не запускает поповер

вот код для извлечения данных по умолчанию и его LIMIT до 5, первые пять всплывающих окон данных работают

<?php 
    $stmt = $connect->prepare("SELECT *, 
      posts.id AS post_id, 
      posts.created_at AS post_created_at 
      FROM posts 
      LEFT JOIN users_account 
      ON posts.user_id = users_account.id 
      LEFT JOIN users_personal_info
      ON users_account.id = users_personal_info.user_id
      ORDER BY post_id DESC LIMIT 5");
    $stmt->execute();
    $rows = $stmt->fetchAll(PDO::FETCH_OBJ);
    ?>
    <hr>
    <div class="display_new_post"></div>
    <?php if ($stmt->rowCount() > 0): ?>
    <?php include 'data.php'; ?>
   <?php else: ?>
     <h1>No Posts</h1>
   <?php endif ?>

  <div id="response"></div>

это код, который отвечает за выборку данных

$('#loader').on('inview', function(event, isInView) {
  if (isInView) {
      var nextPage = parseInt($('#pageno').val()) + 1;
      var total = parseInt($('#total').val());
      $.ajax({
          type: 'POST',
          url: 'pagination.php',
          data: { pageno: nextPage, total: total },
          success: function(response){
            if (response != 'maxed') {
              $('#response').append(response);
              $('#pageno').val(nextPage);
            } else {
              $('#loader').hide();
            }
          }
      });
  }
});

pagination.php

<?php
include 'connection.php';

$pageno = $_POST['pageno'];

$no_of_records_per_page = 5;
$offset = ($pageno-1) * $no_of_records_per_page;

$sql = "SELECT *, 
  posts.id AS post_id, 
  posts.created_at AS post_created_at 
  FROM posts 
  LEFT JOIN users_account 
  ON posts.user_id = users_account.id 
  LEFT JOIN users_personal_info
  ON users_account.id = users_personal_info.user_id
  ORDER BY post_id DESC LIMIT {$offset}, {$no_of_records_per_page}";
$stmt = $connect->prepare($sql);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_OBJ);
$post_count = $stmt->rowCount();



if ($post_count > 0) {
    include('data.php');
} else {
    echo 'maxed';
}

data.php это код, в котором расположены нумерация страниц и домашняя страницаобщий доступ, как вы можете видеть в теге привязки, который является моими данными popover

<?php foreach ($rows as $row): ?>
      <div class="media">
        <img class="align-self-start mr-3 rounded-circle" src="uploads/<?= $row->image_upload ?>" height="55" width="55" alt="Generic placeholder image">
        <div class="media-body">
          <h5 class="mt-0">
            <a href="<?= user()->username === $row->username ? 'mdaMyProfile.php' : 'mdaProfileView.php?user='.$row->username ?>"
            data-post-author="<?= $row->username ?>" 
            data-placement="right" 
            data-container="body" 
            data-toggle="popover" 
            data-trigger="hover"
            data-html="true" 
            title="" 
            data-content="
            <div class='card' style=''>
              <img class='card-img-top' src='https://via.placeholder.com/286x180' alt='card-user-background'>
              <div class='card-body'>
                <img class='rounded rounded-circle card-user-profile' height='64' width='64' src='uploads/<?= $row->image_upload ?>' />
                <h5 class='card-title'><?= ucfirst($row->fname) ?> <?= ucfirst($row->lname) ?>, <?= $row->age ?></h5>
                <p class='card-text text-muted'><?= empty($row->description) ? 'No description' : $row->description ?></p>
              </div>
            </div>
            ">
              <?= $row->username ?>
            </a>

            </h5>
          <small class="text-muted">
            <i>
              <i class="fa fa-clock-o"></i> 
              <span class="time" data-time-post-id="<?= $row->post_id ?>"><?= time_elapsed($row->post_created_at) ?></span>
            </i>
          </small>

          <p><small class="text-muted post-body"><?= $row->body ?></small></p>
           <?php  
           $like_stmt = $connect->prepare("SELECT *, COUNT(*) AS total_likes FROM likes WHERE post_id = {$row->post_id}");
           $like_stmt->execute();
           $like_row = $like_stmt->fetch(PDO::FETCH_OBJ);

           $comment_stmt = $connect->prepare("SELECT *, COUNT(*) AS total_comments FROM comments WHERE post_id = {$row->post_id}");
           $comment_stmt->execute();
           $comment_row = $comment_stmt->fetch(PDO::FETCH_OBJ);
           ?>
          <ul class="list-inline">
           <li class="list-inline-item">
            <small class="text-muted">
              <span class="likes_total_<?= $row->post_id ?>">
                <?= $like_row->total_likes ?></span><?= $like_row->total_likes > 1 ? ' Likes' : ' Like' ?>
            </small>
           </li>
           <li class="list-inline-item">
            <small class="text-muted">
              <span class="comments_total_<?= $row->post_id ?>">
                <?= $comment_row->total_comments ?>
              </span>
              <?= $comment_row->total_comments > 1 ? ' Comments' : ' Comment' ?>
            </small>
           </li>
           <li class="list-inline-item float-right">
            <small class="text-muted">25 Shares</small>
           </li>
         </ul>
           <ul class="list-inline">
            <li class="list-inline-item">
             <small>
                <?php  
                $user_id = user()->user_original_id;
                $isUserLiked_stmt = $connect->prepare("SELECT * FROM likes WHERE post_id = {$row->post_id} AND user_id = {$user_id}");
                $isUserLiked_stmt->execute();
                ?>
                <a 
                class="social-icon text-xs-center like like_button_<?= $row->post_id ?><?= $isUserLiked_stmt->rowCount() ? ' bold' : '' ?>" 
                data-user-id="<?= user()->user_original_id ?>" 
                data-author="<?= $row->username ?>" 
                data-post-id="<?= $row->post_id ?>" 
                data-type="post"
                href="javascript:void(0)">
                <i class="fa fa-thumbs-up up"
                ></i> Like</a>
              </small>
           </li>
            <li class="list-inline-item">
             <small><a class="social-icon text-xs-center comment" 
              href="javascript:void(0)" 
              data-post-id="<?= $row->post_id ?>" 
              data-toggle="modal" 
              data-target="#exampleModal"><i class="fa fa-comment"></i> Comment</a></small>
           </li>
            <li class="list-inline-item float-right">
             <small><a class="social-icon text-xs-center" href="javascript:void(0)"><i class="fa fa-share"></i> Share</a></small>
           </li>
          </ul>
        </div>
      </div>
  <?php endforeach; ?>

Мое решение я добавляю popover init в нижней части foreach и он работает, но каждый раз, когда я выбираю данные, функциябудет получать дубликаты каждый раз, когда я получаю новые данные

   <?php foreach ($variable as $key => $value): ?>
  <!-- some post data -->
   <?php endforeach ?>
   <script>
     $(function () {
       $('[data-toggle="popover"]').popover()
     })
   </script>

Есть ли способ избежать этого?

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