javascript - 响应后在 HTML 中附加未知文本

标签 javascript php jquery ajax infinite-scroll

我一直在尝试实现无限滚动,在 Ajax 中成功调用之后,当我将结果附加到 HTML 时,它总是给我一个不必要的数字 1,正如你在图片中看到的,我不知道在哪里它来自 enter image description here
enter image description here

分页.php

<?php
include 'connection.php';

// header('Content-Type: application/json');

$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) {
    $results = include('data.php');
    echo $results;
} else {
    echo 'maxed';
}

索引.php

<?php


include 'connection.php'; 

?>
<!DOCTYPE html>
<html lang="en">
<head>
  <?php include 'mda_header.php' ?>
  <style>

  #loader{
      display: block;
      margin: auto;
  }
</style>
</head>
<body>

<div class="container">
    <?php
        $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 5";
        $stmt = $connect->prepare($sql);
        $stmt->execute(); 
        $rows = $stmt->fetchAll(PDO::FETCH_OBJ);
        ?>
        <?php include 'data.php' ?>
  <div id="response"></div>
</div>
  <input type="hidden" id="pageno" value="1">
  <img id="loader" src="https://i.redd.it/ounq1mw5kdxy.gif">
  <script src="jquery.inview.min.js"></script>
  <script>
    $(document).ready(function(){
      $('#loader').on('inview', function(event, isInView) {
          if (isInView) {
              var nextPage = parseInt($('#pageno').val()) + 1;
              console.log(nextPage);
              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();
                    }
                  }
              });
          }
      });
  }
  </script>
</body>
</html>

这是我获取结果的地方,我在代码中没有看到任何数字

data.php

<?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="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="<b><?= ucfirst($row->fname) ?> <?= ucfirst($row->lname) ?>, <?= $row->age ?></b>" 
            data-content="<p class='text-muted'><?= empty($row->description) ? 'No description' : $row->description ?></p>"
            >

              <?= $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">
              <!-- comment_button -->
             <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; ?> 

最佳答案

您只需要一个包含 - 您也不需要回显结果,您可能会发现 $results1 以指示 include() 成功。改变

$results = include('data.php');
echo $results;

include('data.php');

如果包含的脚本使用return 将数据传回,您只需要赋值和echo

关于javascript - 响应后在 HTML 中附加未知文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54397363/

相关文章:

javascript - 在单个 Http 请求中打包多个 jQuery 模板的最佳方法?

javascript - jest.fn() 旨在解决哪些问题?

javascript - 带有 webpack 的 Paper.js

javascript - 如何让javascript在页面加载后发送ajax数据而无需按钮?

java - 是否有 Java 的 Matcher 类的 PHP 端口?

javascript - 如何使用 Javascript/HTML 进行简单的图片上传

javascript - 导入 Bootstrap JavaScript、Webpack

javascript - prototypeJS DOM 与 AJAX 交互

如果一个索引是最后一个倒带数组,则PHP循环两个数组

jquery - 组合 $.css() 调用的性能改进?