JavaScript/jQuery 脚本在没有循环的情况下循环 3 次

JavaScript/jQuery script looping 3 times without a loop

本文关键字:循环 情况下 jQuery 脚本 JavaScript      更新时间:2023-09-26

我正在尝试让一个通知框在错误/成功时弹出,然后在 5 秒后隐藏。问题是它出现,隐藏,然后重复3次。这很烦人,我相信它会让用户感到烦恼。

我想也许我的javascript很糟糕,所以我尝试了jquery,结果仍然是一样的。

function ajaxObj(meth, url) {
    var x = new XMLHttpRequest();
    x.open(meth, url, true);
    x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    return x;
}
function ajaxReturn(x){
    if(x.readyState == 4 && x.status == 200){
        return true;
    }
}

   function login() {
    var u = _("user").value;
    var p = _("pass").value;
    var status = _("status");
    var ajax = ajaxObj("POST", "login_script.php");
    ajax.onreadystatechange = function(){
    if(ajax.responseText !== "success"){
        status.innerHTML = ajax.responseText;
        _('status').className = "nNote nFailure hideit";
        var svalue = _('status').innerHTML;
        _('status').innerHTML = svalue + '<span style="float:right; margin-right:20px; font-size:10px;" onclick="hideStatus()"> X </span>';
        $( document ).ready(function() {
            $('#status').slideDown(1000).delay( 5000 ).slideUp(1000);
         });
      }
    };
    ajax.send(
        "u=" + u
        + "&p=" + p);
}

如果您想查看它在做什么,请访问此站点并单击"登录"

更改:

    if(ajax.responseText !== "success"){

自:

    if(ajaxReturn(ajax) && ajax.responseText !== "success"){

您有此函数用于检查 AJAX 请求是否完成,但您忘记调用它。

ajax.readyState!==4时离开函数

当 onreadystatechange 事件触发时,您正在调用此函数,但此事件将触发多次(当请求完成readyState===4时)

但是这个问题被标记为"jquery",你最好使用jQuery.ajax()

相关文章: