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:你是对的,但我只会给出解决问题的另一种方法,而不是一个完美的详细解决方案。