【问题标题】:Requesting data from php through ajax通过ajax从php请求数据
【发布时间】:2018-12-09 18:04:15
【问题描述】:

尝试请求用户发布的帖子并根据用户的请求加载更多帖子。 在控制台中发出 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());
        }
    } 
}

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

【问题讨论】:

  • 您是否使用session_start()$_SESSION['post'] 初始化了会话?您是否检查过您在每个 AJAX 请求中访问的会话是否相同?

标签: javascript php jquery json


【解决方案1】:

尝试使用 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);    
               }
    });
});

【讨论】:

  • 没有错误了,但仍然是一个空响应。谢谢
  • 请尝试回显结果而不是返回。并调试你的 php 代码
  • 顺便说一下为什么 JSON.parse 不起作用,尽管我看到很多人将它包含在他们的代码中。
  • 这个还没有完全解决,求建议写得更好
  • 问题可能出在您的 echo 或 return 语句 JavaScript json 显示错误但 json_encode 如果数据为空则不显示错误。
【解决方案2】:

试试这个:

 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"]);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-04
    • 2019-04-04
    • 2017-02-06
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    相关资源
    最近更新 更多