php - 使用 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:添加了一些显示内容的模式代码,以更好地理解我的问题。
解决方案
看来你是新来的。欢迎。当您不完全发布代码时会有点困难,因为其他人可能很难理解它。所以下次请务必完整发布。
使用 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");
}
})
我希望它有所帮助。
亲切的问候。
推荐阅读
- sql - 视图和触发器的上次运行日期
- apache-kafka-streams - Kafka Streams 将新源添加到正在运行的应用程序
- nginx - 通过 Nginx 反向代理 .net 核心不起作用
- react-native - import * as SQLite from 'expo-sqlite' not working
- ignite - 点燃近缓存 - 可以将相同的分布式缓存配置为一个点燃客户端中的近缓存和另一个点燃客户端中的常规缓存吗?
- javascript - 如何在 Svelte 组件中接收任意道具并传递给子组件?
- python - 在 python 和 appium 中,为什么不能使用 send_keys() 到输入框
- python - 如何在python中自动安排和发送python生成报告的电子邮件
- c++ - 如何使用自制软件、cMake 和 cLion 将库添加到 C++ 项目
- mysql - 如何从 Whm 永久禁用 only_full_group_by