Javascript 如何通过单击AJAX调用返回的按钮来使用clearInterval?
在我的状态页面上,我有一个名为Javascript 如何通过单击AJAX调用返回的按钮来使用clearInterval?,javascript,php,ajax,Javascript,Php,Ajax,在我的状态页面上,我有一个名为errorbargoesher的div id。我有一个简单的AJAX调用,每10秒运行一次,检查它是否应该显示一个错误栏。一切正常,错误栏也在我需要时显示,等等 现在我只想关闭命令上的错误栏。但我制作的按钮无法访问或查看任何其他JS函数,因为它位于不同的页面上。我检查了网页上的源代码,甚至没有看到错误条的代码,当它明显显示在页面上时;只有errorbargoesherdiv标签是空的 有没有办法用我做的那个按钮来清除间隔?代码如下 Javascript var se
errorbargoesher
的div id。我有一个简单的AJAX调用,每10秒运行一次,检查它是否应该显示一个错误栏。一切正常,错误栏也在我需要时显示,等等
现在我只想关闭命令上的错误栏。但我制作的按钮无法访问或查看任何其他JS函数,因为它位于不同的页面上。我检查了网页上的源代码,甚至没有看到错误条的代码,当它明显显示在页面上时;只有errorbargoesher
div标签是空的
有没有办法用我做的那个按钮来清除间隔?代码如下
Javascript
var setErrorBarId = window.setInterval(function(){runErrorBarAjax();}, 10000);
function runErrorBarAjax() {
var xmlhttp = getAjaxObject();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
processErrorBarResponse(xmlhttp.responseText);
}
}
xmlhttp.open("GET", "lib/errorBar.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send();
}
function processErrorBarResponse(response){
document.getElementById(\'errorBarGoesHere\').innerHTML = response;
}
errorBar.php
session_start(); // Start the session from here.
if(isset($_SESSION['errorBarError'])){
echo '
<link rel="stylesheet" type="text/css" href="main.css" media="screen" />
<div id="errorBar">
<div id="innertube">
<h2><center>
<div id="errorBarCaution"><img src="../images/caution.png" width="18" height="18"></div>'.$_SESSION['errorBarError'].'
</center></h2>
<input type="image" src="../images/closeButton.png" width="20" height="20" onclick="clearInt(setErrorBarId);">
</div>
</div>
';
unset($_SESSION['errorBarError']);
}
session_start();//从这里开始会话。
如果(isset($\u会话['errorBarError'])){
回声'
“.$”会话['errorBarError']”
';
取消设置($_会话['errorBarError']);
}
最好的方法是使用。
您的文档可以是
<html>
<head>
<link rel="stylesheet" type="text/css" href="main.css" media="screen" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<div id="errorBarGoesHere"></div>
<input id="remove" type="image" src="../images/closeButton.png" width="20" height="20" />
<script type="text/javascript">
$(document).ready(function() {
var setErrorBarId = window.setInterval(function(){
$("#errorBarGoesHere").load("lib/errorBar.php");
}, 10000);
$("#remove").on('click', function() {
window.clearInterval(setErrorBarId);
$(this).remove();
});
});
</script>
</body>
</html>
$(文档).ready(函数(){
var setErrorBarId=window.setInterval(函数(){
$(“#errorbargoeser”).load(“lib/errorBar.php”);
}, 10000);
$(“#删除”)。在('单击',函数()上{
窗口清除间隔(setErrorBarId);
$(this.remove();
});
});
errorBar.php
session_start(); // Start the session from here.
if(isset($_SESSION['errorBarError'])){
echo '
<div id="errorBar">
<div id="innertube">
<h2><center>
<div id="errorBarCaution"><img src="../images/caution.png" width="18" height="18"></div>'.$_SESSION['errorBarError'].'
</center></h2>
</div>
</div>
';
unset($_SESSION['errorBarError']);
}
session_start();//从这里开始会话。
如果(isset($\u会话['errorBarError'])){
回声'
“.$”会话['errorBarError']”
';
取消设置($_会话['errorBarError']);
}
按钮在不同页面上是什么意思?要删除间隔,可以使用window.clearInterval(setErrorBarId)代码>是,但是我的lib/errorBar.php通过AJAX调用将内容返回到status.php。lib/errorBar.php上的内容无法清除status.php上设置的间隔。至少我似乎无法让它这么做。这里有什么问题吗?您可以设置一个特殊的ajax响应来标识清除间隔。你可以用js阅读这个特殊的回复并清除间隔。我不确定我是否在这里跟踪你。你能详细说明一下吗?或者可以将我链接到一个示例?您是否已经尝试过window.clearInterval(setErrorBarId)代码>?我不知道clearInt()做什么?但是我会将关闭按钮设置在对静态html文档的ajax响应之外。然后在window.clearInterval(setErrorBarId)中绑定一个点击处理程序代码>。这将更改程序的行为。“删除”按钮应仅在出现错误栏时出现。不过,你几乎找到了解决办法。真正的解决方案是隐藏按钮,并在出现错误栏时显示它。不管有没有jQuery,这都很容易做到。@slebetman:你是对的,但我只会给出解决问题的另一种方法,而不是一个完美的详细解决方案。