首页 > 解决方案 > 使用 Ajax 时内容未显示在我的社交媒体网站项目中

问题描述

我正在尝试将社交媒体网站构建为一个主要项目,并且我今天尝试使用 Ajax,但实施后内容没有显示。我正在尝试加载限制为 10 的帖子,但内容没有显示在索引上。

enter code herepublic function loadPostsFriends($data,$limit)
{
    $page=$data['page'];
    $userLoggedIn=$this->user_obj->getUsername();
    if($page==1)
    {
        $start=0;
    }
    else
    {
        $start=($page-1) * $limit;   
    }
    $str=""; //Str to return
    $data_query=mysqli_query($this->con,"SELECT * FROM posts WHERE deleted='no' ORDER BY id DESC");
    if(mysqli_num_rows($data_query) > 0)
    {
    $num_iterations = 0; //number of result checking
    $count=1;
    while($row=mysqli_fetch_array($data_query))
    {
        $id=$row['id'];
        $body=$row['body'];
        $added_by=$row['added_by'];
        $date_time=$row['date_added'];
        //prepare user_to string to include it even if not posted to an user
        if($row['user_to'] == 'none')
        {
            $user_to="";
        }
        else
        {
           $user_to_obj=new User($con,$row['user_to']);
           $user_to_name=$user_to_obj->getFirstAndLastName();
           $user_to="wrote to <a href'" . $row['user_to'] . "'>" . $user_to_name . "</a>";
        }
        //check if userwho posted has their account closed
        $added_by_obj=new User($this->con,$added_by);
        if($added_by_obj->isClosed())
        {
            continue;
        }
        if($num_iterations++ < $start)
        {
            continue;
        }
        //once 10 posts loaded just break
        if($count > $limit)
        {
            break;
        }
        else
        {
            $count++;    
        }
var userLoggedIn='<?php echo $userLoggedIn; ?>';
$(document).ready(function()
{
    $('#loading').show();
    //ajax request for loading 1st posts
    $.ajax({
       url: "includes/handlers/ajax_load_posts.php",
       type: "POST",
       data: "page=1&userLoggedIn=" + userLoggedIn,
       cache:false,
       success: function(data)
        {
            $("#loading").hide();
            $('.posts_area').html(data);
        }
    });
    $(window).scroll(function()
    {
     var height=$('.posts_area').height(); //div containing posts
     var scroll_top=$(this).scrollTop();
     var page=$('.post_area').find('.nextPage').val();
     var noMorePosts=$('.posts_area').find('.noMorePosts').val();
     if((document.body.scrollHeight==document.body.scrollTop + window.innerHeight) && noMorePosts == 'false')
         {
            $('#loading').show();
            var ajaxReq=$.ajax({
            url: "includes/handlers/ajax_load_posts.php",
            type: "POST",
            data: "page=" + page + "&userLoggedIn=" + userLoggedIn,
            cache:false,
            success: function(response)
            {
             $('.posts_area').find('.nextPage').remove(); //removes current next page
             $('.posts_area').find('.noMorePosts').remove();
             $("#loading").hide();
             $('.posts_area').append(response);
            }
          });
         } //If end
        return false;
    }); //ending of $(window).scroll(function()
});

PS:添加了一些显示内容的模式代码,以更好地理解我的问题。

标签: phpjqueryhtmlajax

解决方案


看来你是新来的。欢迎。当您不完全发布代码时会有点困难,因为其他人可能很难理解它。所以下次请务必完整发布。

使用 Ajax 显示数据的解决方案?

PHP代码:

  $data = array();

  while($row=mysqli_fetch_array($data_query)){
    $id=$row['id'];
    $body=$row['body'];
    $data[] = $id;
    $data[] = $body;
  }

  echo json_encode($data);

将数据保存到数据数组变量中。然后使用json_encode以 json 格式返回。

JS代码:

 $.ajax({
  url: 'url/to/server',
  method: 'get',
  dataType: "json",
  success: function(data){
    //data is returned from php script
    console.log(data);
  },
  error: function(){
    console.log("error");
  }
})

我希望它有所帮助。

亲切的问候。


推荐阅读