Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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和AJAX实时更新通知_Javascript_Php_Jquery_Ajax_Pdo - Fatal编程技术网

Javascript PHP和AJAX实时更新通知

Javascript PHP和AJAX实时更新通知,javascript,php,jquery,ajax,pdo,Javascript,Php,Jquery,Ajax,Pdo,目前在AJAX调用方面遇到一些问题。它旨在参考外部php文件实时显示通知。当我测试php inside.php时,它工作得很好,但由于某些原因,当我试图通过ajax调用代码时,它不起作用。有人知道我做错了什么吗 编辑:通过添加会话_start()解决;在文件顶部,也可以在ajax调用中使用.class而不是#id 在notif_follow.php中: <?php session_start(); require_once 'class.channel.php'; $user_notif

目前在AJAX调用方面遇到一些问题。它旨在参考外部php文件实时显示通知。当我测试php inside.php时,它工作得很好,但由于某些原因,当我试图通过ajax调用代码时,它不起作用。有人知道我做错了什么吗

编辑:通过添加会话_start()解决;在文件顶部,也可以在ajax调用中使用.class而不是#id

在notif_follow.php中:

<?php
session_start();
require_once 'class.channel.php';

$user_notif = new USER();

$user_id = $_SESSION['userID'];

$stmt = $user_notif->runQuery("SELECT * FROM tbl_users WHERE userID=:uid");
$stmt->execute(array(":uid"=>$user_id));
$row = $stmt->fetch(PDO::FETCH_ASSOC);

$stmt = $user_notif->runQuery("SELECT * FROM notif_follow WHERE receive_id=:rid ORDER BY id DESC LIMIT 5");
$stmt->execute(array(":rid"=>$user_id));
$notifs = $stmt->fetchAll(PDO::FETCH_ASSOC);

$notification = '';

if($notifs !== false)
 {
  foreach($notifs as $notif)
  {
   $notification .= '
   <li>
     <div class="notifbox">
     <strong>'.$notif['send_name'].'</strong><p> is now following you.</p>
     <button class="button">Follow</button><button class="button">View Channel</button>
     </div>
   </li>
   <li class="divider"></li>
   ';
  }
 }
 else
 {
  $notification .= '<li><a href="#" class="text-bold text-italic">No Notifications Found</a></li>';
 }

header('Content-type: application/json');
$notif_array = array('notification'=>$notification);
echo json_encode($notif_array);
?>

index.php中的Ajax调用:

<script type="text/javascript">

var timer;

timer = setInterval(function() {

  $(document).ready(function(){
        $.getJSON('notif_follow.php', function(data) {
          $('#notifbox').html(data.notification);
        });
      });

}, 1 * 1000);

</script>

无功定时器;
计时器=设置间隔(函数(){
$(文档).ready(函数(){
$.getJSON('notif\u follow.php',函数(数据){
$('#notifbox').html(data.notification);
});
});
}, 1 * 1000);

您不必像那样传递会话ID。启动会话设置cookie,发送AJAX请求将发送cookie,就像单击链接或发送表单一样。只要访问您请求的脚本顶部的
$\u会话['userID']
,它就可以正常工作。顺便说一句,我建议不要返回JSON包装的HTML,尤其是当您传递的是单个字符串时。相反,传递用户名数组,然后在客户机中编写HTML。通过这种方式,您可以在应用程序中重用PHP api,而无需重写所有内容;在顶部我得到一个错误:未定义变量:_session您需要放置
session_start()在顶部。谢谢,已经解决了。我还从ajax调用中删除了id echo。由于某种原因,它仍然没有更新。原来是无法识别的div的id。当前正在使用引导程序,而该类正在超越id#。谢谢你的帮助。你不必像那样传递会话ID。启动会话设置cookie,发送AJAX请求将发送cookie,就像单击链接或发送表单一样。只要访问您请求的脚本顶部的
$\u会话['userID']
,它就可以正常工作。顺便说一句,我建议不要返回JSON包装的HTML,尤其是当您传递的是单个字符串时。相反,传递用户名数组,然后在客户机中编写HTML。通过这种方式,您可以在应用程序中重用PHP api,而无需重写所有内容;在顶部我得到一个错误:未定义变量:_session您需要放置
session_start()在顶部。谢谢,已经解决了。我还从ajax调用中删除了id echo。由于某种原因,它仍然没有更新。原来是无法识别的div的id。当前正在使用引导程序,而该类正在超越id#。谢谢你的帮助。