Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax/Php会得到不止一个结果_Php_Javascript_Jquery_Ajax_Json - Fatal编程技术网

Ajax/Php会得到不止一个结果

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({ 类型:“

我已经建立了一个脚本,可以从数据库中获取用户的帖子,我就快到了。通过ajax调用,我在Firebug的响应中得到了10篇文章,只是当我单击LoadMore时,页面中只显示了1篇文章。我需要在下面的代码中添加什么才能显示更多的结果

阿贾克斯


$(文档).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);
}
?>