-1

エラー/成功時に通知ボックスをポップアップ表示し、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);
}

それが何をしているか見たい場合は、このサイトにアクセスして「ログイン」をクリックしてください

4

2 に答える 2

2

変化する:

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

に:

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

AJAX リクエストが完了したかどうかを確認するためのこの関数がありますが、呼び出すのを忘れていました。

于 2013-09-27T01:53:31.713 に答える