通过Ajax从php请求数据

时间:2018-12-09 18:04:15

标签: javascript php jquery json

尝试请求用户发布的帖子,并根据用户的请求加载更多帖子。 在控制台中发出Ajax请求时,JSON输入错误意外结束。

JavaScript

    $("#ajax_load_more").click(function(){
    $.ajax({
          type: "GET", 
          url: "action.php?action=morePosts",
          success: function(response){
                var result = $.parseJSON(response);        
                console.log(result);      
               }
    });
});

请求以下代码。 $ _SESSION ['posts'])存储会话中要加载的帖子数。

if($_GET['action']=="morePosts"){
    if(isset($_SESSION['posts'])){
        $_SESSION['posts'] = $_SESSION['posts'] + 4;
        echo fetchAllPosts($_SESSION['posts']);
    } else if(isset($_SESSION['posts'])&& $_SESSION['posts']>4){
        $_SESSION['posts'] = 4;
    }  
}   

请求所有帖子的功能

    function fetchAllPosts2($array_length){
    $db = new db; //Class for database
    $query = "SELECT * FROM `posts` ORDER BY `post_id` DESC LIMIT $array_length";
    $result = $db::query($query); 
    $row = mysqli_fetch_all($result); 
    $post = array();
    for($i=0; $i<$array_length; $i++){
        if(!empty($row[$i])){
            for($j=0;$j<count($row);$j++){
                $post['id']=$row[$i][0];
                $post['user_id']=$row[$i][1];
                $post['title']=substr($row[$i][2], 0 ,75);
                $post['text']=strip_tags(mb_substr($row[$i][3],0,50));
                $post['image']=$row[$i][4];
                $post['date']=$row[$i][5];
            }                           
            return json_encode($post);
        }
        elseif(empty($row[count($row)])){
            return json_encode(array());
        }
    } 
}

请提出实现此功能的更好方法,

2 个答案:

答案 0 :(得分:0)

尝试使用echo而不是return并更改ajax,就像您也不要在elseif部分中回显代码一样:

$("#ajax_load_more").click(function(){
    $.ajax({
          type: "GET",
          dataType: "json",
          url: "action.php?action=morePosts",
          success: function(response){
                   console.log(response);    
               }
    });
});

答案 1 :(得分:0)

尝试:

 function fetchAllPosts2($array_length){
$db = new db; //Class for database
$query = "SELECT * FROM `posts` ORDER BY `post_id` DESC LIMIT $array_length";
$result = $db::query($query); 
$row = mysqli_fetch_all($result);
 $post = array();
if($result && mysqli_num_rows($result) > 0) {
 foreach($row as $key=>$value){
   $post[$key]['id']=$value['id'];
            $post[$key]['user_id']=$value['user_id'];
            $post[$key]['title']=substr($value['title'], 0 ,75);
            $post[$key]['text']=strip_tags(mb_substr($value['text'],0,50));
            $post[$key]['image']=$value['image'];
            $post[$key]['date']=$value['date'];
 }
  return json_encode($post);
}
 return json_encode(['error'=>"no post found"]);
}