Javascript PHP和AJAX实时更新通知
目前在AJAX调用方面遇到一些问题。它旨在参考外部php文件实时显示通知。当我测试php inside.php时,它工作得很好,但由于某些原因,当我试图通过ajax调用代码时,它不起作用。有人知道我做错了什么吗 编辑:通过添加会话_start()解决;在文件顶部,也可以在ajax调用中使用.class而不是#id 在notif_follow.php中: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
<?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#。谢谢你的帮助。