Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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
Javascript 为什么我的php数组只返回最近/最近的帖子活动_Javascript_Php_Jquery_Arrays - Fatal编程技术网

Javascript 为什么我的php数组只返回最近/最近的帖子活动

Javascript 为什么我的php数组只返回最近/最近的帖子活动,javascript,php,jquery,arrays,Javascript,Php,Jquery,Arrays,我创建了一个jquery,它将数据发送到一个php文件,在查询之后,如果在sql中找到任何数据,php将通过json_encode将数据返回到jquery,以便将其追加 Jquery向php文件发送了两种类型的数据: 第1页:页面id 第二:发布ID一个jquery数组将它们发送到php文件 如果我使用print_r$_REQUEST['CID'];出口在php文件上测试他从jquery获得的内容,返回并显示所有post ID 但如果我在某个帖子上回复,那是我最近回复的唯一回复 这意味着,如果我

我创建了一个jquery,它将数据发送到一个php文件,在查询之后,如果在sql中找到任何数据,php将通过json_encode将数据返回到jquery,以便将其追加

Jquery向php文件发送了两种类型的数据:

第1页:页面id

第二:发布ID一个jquery数组将它们发送到php文件

如果我使用print_r$_REQUEST['CID'];出口在php文件上测试他从jquery获得的内容,返回并显示所有post ID

但如果我在某个帖子上回复,那是我最近回复的唯一回复

这意味着,如果我有3个帖子,比如:post-1st,post-2nd,post-3rd;我的php只返回第三次之后的活动

我希望我的脚本在sql提交后更新任何回复

mywall.php

    // id is dynamic
<div class="case" data-post-id="111"></div> 
<div class="case" data-post-id="222"></div>
<div class="case" data-post-id="333"></div>

//Check for any update after 15 second interval by post id.
<script type="text/javascript" charset="utf-8">

var CID = [];
$('div[data-post-id]').each(function(i){
    CID[i] = $(this).data('post-id');
});

function addrep(type, msg){
CID.forEach(function(id){
    $("#newreply"+id).append("<div class='"+ type +""+ msg.id +"'><ul>"+ msg.detail +"</ul></div>");
});
}
var tutid = '<?php echo $tutid; ?>';
function waitForRep(){
    $.ajax({
        type: "GET",
        url: "/server.php",
        cache: false,
        data: {
        tutid : tutid,
        CID : CID
    },
        timeout:15000, 
        success: function(data){ 
            addrep("postreply", data);
            setTimeout(
                waitForRep, 
                15000 
            );
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            setTimeout(
                waitForRep, 
                15000); 
        }
    });
}

$(document).ready(function(){
    waitForRep();
});
</script>

尝试如下方式声明CID数组:

var CID = new Array();

看起来您正在循环通过CID并对每个CID运行SQL查询,但是您只在循环之外检索一次结果。如果运行,则只能获得最后一个查询的结果

$rows =  mysqli_fetch_assoc($res);
在CIDs foreach循环之外

@科威特石油公司: 不幸的是,它不会像移动闭合循环括号那样简单。如果试图在一个AJAX调用中检索多个数据集,则需要在AJAX的成功回调或addrep函数中处理多个数据集。这里有一种方法,但根据您最终要做的事情,您可以使用多种不同的方法:

while (true) {
  if($_REQUEST['tutid'] && $_REQUEST['CID']){
    $data = array();
    foreach($_REQUEST['CID'] as $key => $value){

      date_default_timezone_set('Asia/Dhaka');
      $datetime = date('Y-m-d H:i:s', strtotime('-15 second'));
      $res = mysqli_query($dbh,"
        SELECT *
        FROM comments_reply
        WHERE post_id =".$value."
          AND qazi_id=".$_REQUEST['tutid']."
          AND date >= '$datetime'
        ORDER BY id DESC LIMIT 1
      ") or die(mysqli_error($dbh));

      $row = mysqli_fetch_assoc($res)
      $data[] = array_map('utf8_encode', $row);
    } // array close

    //$rows =  mysqli_fetch_assoc($res);  
    //$row[] = array_map('utf8_encode', $rows);
    //$data = array();

    //$data['id'] = $rows['id']; 
    //$data['qazi_id'] = $rows['qazi_id'];
    //ect all

    // do something and echo $data['detail'] = $detail;

    if (!empty($data)) {
      echo json_encode($data);
      flush();
      exit(0);
    }

  }  // request close
  sleep(5);
}  // while close
然后在Javascript中:

...
success: function(data){
  for (var i=0, len=data.length; i<len; i++) {
    addrep("postreply", data[i]);
  }
  setTimeout(waitForRep, 15000);
},
...

但这只是一个例子。我真的不知道您的数据集是什么样子,也不知道您希望数据如何传递和使用。这只是一个希望能让你走上正确方向的想法。

我为什么要这样做。你认为问题出在哪里?如果我在`}//request close`之前替换`}//array close`它现在可以用于第1篇文章。困惑的非常感谢。请再来点什么?
...
success: function(data){
  for (var i=0, len=data.length; i<len; i++) {
    addrep("postreply", data[i]);
  }
  setTimeout(waitForRep, 15000);
},
...