使用PHP/Ajax/Jquery显示根据内容格式化的动态帖子
我正在开发一个评论/内容/发布系统,遇到了一个岔路口,所以我想我应该在选择路径之前征求其他意见。很抱歉,但目前我没有一个足够好的工作示例来展示(或者我可以分享),所以希望我的描述足够了 我有一个index.php主页,它调用loadmore.php请求在div中显示用户帖子。loadmore.php从MySQL数据库获取这些数据 每个帖子可以是不同的类型,在屏幕上显示时也会有所不同 示例(所有帖子均显示发布的用户和顶部的日期):使用PHP/Ajax/Jquery显示根据内容格式化的动态帖子,php,jquery,ajax,Php,Jquery,Ajax,我正在开发一个评论/内容/发布系统,遇到了一个岔路口,所以我想我应该在选择路径之前征求其他意见。很抱歉,但目前我没有一个足够好的工作示例来展示(或者我可以分享),所以希望我的描述足够了 我有一个index.php主页,它调用loadmore.php请求在div中显示用户帖子。loadmore.php从MySQL数据库获取这些数据 每个帖子可以是不同的类型,在屏幕上显示时也会有所不同 示例(所有帖子均显示发布的用户和顶部的日期): POST:常规POST,仅限文本 链接:将链接页面的标题显示为超
- POST:常规POST,仅限文本
- 链接:将链接页面的标题显示为超链接,旁边是小缩略图,下面是从链接站点提取的文本片段
- 图片:显示带有标题的大图片
- 视频:在顶部显示标题,标题下的视频占div宽度的一半,视频描述在视频旁边
<div id="mainContainer">
//Content
<div id="postsContainer">
//Individual posts go in here (Several divs formatted according to content)
</div>
//More content
</div>
<script>
GET data to loadmore.php and get results into variables
IF "type" is "link"
append to #postsContainer "<div id="linkURL"....$variables etc...
IF "type" is "video"
append to #postsContainer "<div id="videoDiv"....$variables
//And so on...
</script>
<?PHP
//Get and process post data into variables
//Query SQL database for more/new posts
//Return individual data in JSON format to index.php
?>
<?PHP
//Get and process post data into variables
//Query SQL database for more/new posts
IF "type" is "link"
$returnHTML = "<div id="linkURL....$variables etc...
IF "type" is "video"
$returnHTML = "<div id="videoDiv....$variables
//And so on...
return $returnHTML;
//This is a single long string returned with all HTML formatted by loadmore.php
//index.php simply has to Append the entire string into the div
?>
//内容
//单独的帖子放在这里(几个div根据内容格式化)
//更多内容
将数据获取到loadmore.php并将结果获取到变量中
如果“类型”是“链接”
追加到#postsContainer“过去做类似事情时
我只想让你的loadmore.php迭代你想显示的帖子,确定类型,并回显正确的格式
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
//...
$result = $mysqli->query($query);
while ($row = $result->fetch_array(MYSQL_ASSOC)) {
$count += 1;
echo '<div id="post'.$count.'">';
switch ($row['type']) {
case 'POST':
//POST format
break;
case 'LINK':
//LINK format
break;
case 'PICTURE':
//PICTURE format
break;
//...
default:
//default
}
echo '</div';
}
$result->free();
$mysqli->close();
?>
然后,在loadmore.php中检索发布的数据就像$POST_u['variable']一样简单,您可以将其合并到查询中(或其他任何内容),具体取决于您所做的操作
我认为从php文件加载输出比传输变量、让模板和ifs使网页膨胀(选项1)或从php文件传递html字符串(选项2)要好。is loadmore.php作为模型或视图运行吗(检索包含post详细信息的对象,或者它获取一个对象并生成html)?它不是一个视图,它只是从index.php脚本中获取参数,并返回变量,如用户名和HTML代码,以作为前缀或附加。它只是运行SQL查询。我个人会在AJAX调用中使用JSON作为数据,这样您就可以轻松地获得“类型”属性,您可以使用该属性根据提供的内容在前端部件上创建相应的标记。{“type”:“link”,“linkData”:“linkUrl”。.etc}
I`d将当前页面与AJAX相结合(页面调用自身),如果是HTTP_请求,则获取参数并生成post/post,否则将作为正常页面,并在视图部分使用switch语句(基于int),根据该语句创建模板use@PeterPajchlJSON是用来传递变量的。那么你的投票是选项1?
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
//...
$result = $mysqli->query($query);
while ($row = $result->fetch_array(MYSQL_ASSOC)) {
$count += 1;
echo '<div id="post'.$count.'">';
switch ($row['type']) {
case 'POST':
//POST format
break;
case 'LINK':
//LINK format
break;
case 'PICTURE':
//PICTURE format
break;
//...
default:
//default
}
echo '</div';
}
$result->free();
$mysqli->close();
?>
<script typ="text/javascript">
$(document).ready(function(){
$("#postsContainer").load("loadmore.php");
});
</script>
var variables = $("#form").serialize();
$.post("loadmore.php", variables, function(data) {
$("#postsContainer").html(data);
});