Ajax/Php会得到不止一个结果
我已经建立了一个脚本,可以从数据库中获取用户的帖子,我就快到了。通过ajax调用,我在Firebug的响应中得到了10篇文章,只是当我单击LoadMore时,页面中只显示了1篇文章。我需要在下面的代码中添加什么才能显示更多的结果 阿贾克斯Ajax/Php会得到不止一个结果,php,javascript,jquery,ajax,json,Php,Javascript,Jquery,Ajax,Json,我已经建立了一个脚本,可以从数据库中获取用户的帖子,我就快到了。通过ajax调用,我在Firebug的响应中得到了10篇文章,只是当我单击LoadMore时,页面中只显示了1篇文章。我需要在下面的代码中添加什么才能显示更多的结果 阿贾克斯 $(文档).ready(函数(){ $('.load_more').live(“单击”,函数() { var ID=$(this.attr(“ID”); 如果(ID) { $(“#加载”+ID).html('Loading…'); $.ajax({ 类型:“
$(文档).ready(函数(){
$('.load_more').live(“单击”,函数()
{
var ID=$(this.attr(“ID”);
如果(ID)
{
$(“#加载”+ID).html('Loading…');
$.ajax({
类型:“POST”,
url:“include/load\u more\u home\u posts.php”,
cache:false,
数据类型:“json”,
数据:{streamitem_id:id},
cache:false,
成功:功能(流){
$(“#文章”).prepend(“X说了
\
\
\
;
//删除上一个加载更多链接
$(“#加载”+ID).remove();
}
});
}
返回false;
});
});
include/load_more_home_posts.php
<?php
session_start();
include("rawfeeds_load.php");
if (isset($_POST['streamitem_id']) && $_POST['streamitem_id'] != "") {
$lastID = mysqli_real_escape_string($mysqli,$_POST['streamitem_id']);
$json= array();
$following_string = mysqli_real_escape_string($mysqli,$_SESSION['id']);
$call="SELECT d.*, c.*, u.*
FROM streamdata AS d
JOIN streamdata_comments AS c ON d.streamitem_id = c.comment_streamitem
JOIN users AS u ON u.id = c.comment_poster
WHERE c.comment_poster = '$following_string'
AND d.streamitem_id < '$lastID'
AND (d.streamitem_target = '$following_string' OR
d.streamitem_creator = '$following_string')
ORDER BY d.streamitem_id DESC LIMIT 10";
$chant = mysqli_query($mysqli, $call) or die(mysqli_error($mysqli));
$json['streams'] = array();
while ($resultArr = mysqli_fetch_assoc($chant)) {
$json['streamitem_id'] = $resultArr['streamitem_id'];
$json['streamitem_content'] = $resultArr['streamitem_content'];
$json['streamitem_timestamp'] = Agotime($resultArr['streamitem_timestamp']);
$json['comment_id'] = $resultArr['comment_id'];
$json['comment_content'] = $resultArr['comment_content'];
$json['comment_poster'] = $resultArr['comment_poster'];
$json['comment_datetime'] = Agotime($resultArr['comment_datetime']);
$json['comment_streamitem'] = $resultArr['comment_streamitem'];
$json['username'] = $resultArr['username'];
$json['id'] = $resultArr['id'];
$json['first'] = $resultArr['first'];
$json['middle'] = $resultArr['middle'];
$json['last'] = $resultArr['last'];
$json['streamdata'][] = $json;
}
echo json_encode($json);
}
?>
您从PHP接收到类似[{item1,item2},{item11,item12},…]的JSON,并且在不迭代的情况下,您只使用第一个组。我认为最好、最简单的方法是使用$.getJSON
函数,而不是$.ajax
。看看第二个例子,我认为这就是处理从PHP接收到的JSON所需要的一切。作为旁注:在jQeury中,1.4.2 live已被委托所取代,并且由于1.7 live被取消了权限,on是首选方法。您应该迭代从PHP脚本返回的JSON。选中此项:。然后我将使用.on()方法。看起来这就是他们要我做的。为什么这会对我有帮助@zelazowy@dave你的while循环看起来很混乱。在循环内部,$jsonArr[]=$resultar
会更容易。并编码$jsonArray
。这将为您提供很好的结构化数组。$,getJSON设计用于处理JSON数据,当然您可以使用$.ajax,但它只不过是重新创建一个轮子。我正试图向您展示使用$.getJSON的方法,请给我几分钟时间。嗯,另一个想法。也许可以尝试在PHP文件中创建一个从JSON创建的完整html,使用load函数()对其进行响应并接收结果。据我所知,这应该比获取JSON和创建10倍的div等更有效。好的,我创建了一个JSFIDLE,其中包含使用load
函数的示例:在HTML部分,我将一些示例数据放在PHP脚本中,在js部分,我将一段代码放在#articles div中,用于将接收到的数据预编到#articles div中。这不起作用,但您可以理解我的意思;)这个想法是:1。创建新的空div选择器,从PHP加载数据并分配到新的变量项目中;2.将变量冠词前置到#冠词div;如果省略新建div并直接使用#articles div,则会删除所有旧数据并填充新数据。使用new div作为缓冲区可以防止您替换数据,并允许使用其他功能(例如prepend、append等)。如果您不想在div中预先添加数据,请按以下方式执行:$(“#articles”).prepend(articles.find(“div”)代码>若我理解你们的意思,那个么答案是否定的。在你们的PHP脚本中,在mysql上的循环结果中,并没有将数据分配到数组中,只需使用你们在javascript和javascript中创建的所有div、锚点、跨度来回显它,并使用load
函数
<?php
session_start();
include("rawfeeds_load.php");
if (isset($_POST['streamitem_id']) && $_POST['streamitem_id'] != "") {
$lastID = mysqli_real_escape_string($mysqli,$_POST['streamitem_id']);
$json= array();
$following_string = mysqli_real_escape_string($mysqli,$_SESSION['id']);
$call="SELECT d.*, c.*, u.*
FROM streamdata AS d
JOIN streamdata_comments AS c ON d.streamitem_id = c.comment_streamitem
JOIN users AS u ON u.id = c.comment_poster
WHERE c.comment_poster = '$following_string'
AND d.streamitem_id < '$lastID'
AND (d.streamitem_target = '$following_string' OR
d.streamitem_creator = '$following_string')
ORDER BY d.streamitem_id DESC LIMIT 10";
$chant = mysqli_query($mysqli, $call) or die(mysqli_error($mysqli));
$json['streams'] = array();
while ($resultArr = mysqli_fetch_assoc($chant)) {
$json['streamitem_id'] = $resultArr['streamitem_id'];
$json['streamitem_content'] = $resultArr['streamitem_content'];
$json['streamitem_timestamp'] = Agotime($resultArr['streamitem_timestamp']);
$json['comment_id'] = $resultArr['comment_id'];
$json['comment_content'] = $resultArr['comment_content'];
$json['comment_poster'] = $resultArr['comment_poster'];
$json['comment_datetime'] = Agotime($resultArr['comment_datetime']);
$json['comment_streamitem'] = $resultArr['comment_streamitem'];
$json['username'] = $resultArr['username'];
$json['id'] = $resultArr['id'];
$json['first'] = $resultArr['first'];
$json['middle'] = $resultArr['middle'];
$json['last'] = $resultArr['last'];
$json['streamdata'][] = $json;
}
echo json_encode($json);
}
?>