[英]Ajax: displaying notification on another page, after successfully saved data to database
我现在已经想做一件事情而脱颖而出。 我想做的是在顶部显示一条消息(确认,“您已经获得2分”)(类似stackoverflow的消息)。
我已经使用会话变量存储了确认消息,然后在index.php处有一个ajax脚本,该脚本每1秒加载一次session.php,以检查是否有消息要显示。
但是我想知道,这不能用另一种方式完成吗? 我的意思是,是否需要一直检查每一秒
我的网站是index.php上的设计,然后您在框架中浏览其余内容。
无论如何,如您所见,我已经为此找到了解决方案,我认为这可能会对服务器提出过多要求。
所以我想知道,这不能用另一种方式吗? 我的意思是,是否需要一直检查每一秒钟?
如果您正确插入了注释并存储了名为user_message的会话变量,那么是否有可能,然后告诉index.php显示#box。
我的评论“表单”在show.php上,其中仅包含一个正常的文本区域和一个提交按钮。 现在,它通过一个JS脚本存储消息,该消息将所有消息传递给一个字符串,插入到insert.php中,该消息将使用普通的mysql查询插入数据库,并存储一个会话变量。 (下面的源代码)
这是一些编码:session.php:
<?php
session_start();
if(isset($_SESSION['user_message'])) {
echo 1;
}
?>
index.php中的div框:
<div id='box' onclick="closeNotice()" style="display: none">
Hey, <b><? echo $pusername; ?></b> - <? echo $_SESSION["user_message"]; ?>
<a href="#" class="close-notify" onclick="closeNotice()">X</a>
</div>
<?php
$_SESSION["user_message"] = null;
?>
每1秒钟刷新一次的ajax脚本(我现在正在使用):
function checkSession(){
$.ajax({url: "session.php", success: function(data){
if( data == 1){
$('#box').show();
}else{
$('#box').hide();
}
}});
}
setInterval('checkSession()',1000);
将字符串传递给insert.php的脚本,该脚本将注释插入数据库:
var nocache = 0;
function insert() {
document.getElementById('insert_response').innerHTML = "Please Wait .. "
var fID= encodeURI(document.getElementById('fID').value);
var kommentar= encodeURI(document.getElementById('kommentar').value);
nocache = Math.random();
http.open('get', 'insert.php?fID='+fID+'&kommentar=' +kommentar+'&nocache = '+nocache);
http.onreadystatechange = insertReply;
http.send(null);
}
function insertReply() {
if(http.readyState == 4){
var response = http.responseText;
document.getElementById('insert_response').innerHTML = ''+response;
}
}
show.php上的表格:
<div id="insert_response">
</div>
<form action="javascript:insert()" method="post">
<textarea id="kommentar" name="kommentar"></textarea><br />
<input type="hidden" name="fID" id="fID" value="<? echo $_GET["id"]; ?>" />
<input type="submit" name="Submit" value="Sæt ind!"/>
</form>
为什么不通过$ .ajax调用将dataType设置为“ script”,并让$ .ajax方法调用的php脚本生成相应的javascript,以相应地插入/删除/显示/隐藏/修改页面上的项目?
我认为您对这个问题的想法过高,在这种情况下使用会话我也认为是不必要的...并且我将尽可能避免这种情况。
看这里-http : //api.jquery.com/jQuery.ajax/-在参数“ dataType”处的特定参数“ script”,我想您会发现它对您要完成的工作很有帮助。
除非您希望消息停留在多个页面上,否则不需要会话。
如果您尝试在按提交后将用户发送到另一个页面,则将ajax响应存储到一个隐藏的输入中,并使用$ _POST进行检索。
如果页面相同,只需将ajax响应保存到box并调用box.show()进行显示。
好?
我认为您将需要彗星摆脱请求。 但是,我自己并没有使用过它,对此我也不了解,所以我无法真正为您提供帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.