簡體   English   中英

返回后正在執行Javascript語句

[英]Javascript statements are executing after return

這是我的代碼:

    $.each(json.ids, function(i, v) {
        if ($("#user").val() === v.username) {
            if ($("#pw").val() === v.password) {
                window.location = '/menu.html';
                return; //THIS RETURN
            }
            $("#errorblock").text("incorrect password").show().fadeOut(1000);
            return false;
        }
        event.preventDefault();
        $("#errorblock").text("no user found").show().fadeOut(1000);
    });

json是一個包含json格式數據的變量。 奇怪的是,一旦您輸入了嵌套的if( if ($("#pw").val() === v.password) ),該窗口將正確地更改為menu.html,但單詞為“ if ($("#pw").val() === v.password) password”或“未找到用戶”將在更改窗口之前閃爍。 我可以通過某種解決方法來解決此問題,但我很好奇為什么會發生-返回是否不應該停止執行代碼? 在這里是否有一些語法(或其他)錯誤應糾正以防止這種情況發生?

而不是在每個邏輯中執行邏輯,而是在處理之前先找到用戶。

 var username = $("#user").val(); var password = $("#pw").val(); //find the user based on their username var user = $.grep(json.ids, function(user){ return user.username === username; }); //if you found a user, check their password if (user.length) { if (user[0].password === password) { //redirect them for good case window.location = '/menu.html'; } else { //show incorrect password message $("#errorblock").text("incorrect password").show().fadeOut(1000); } } else { //no user found, do whatever event.preventDefault(); $("#errorblock").text("no user found").show().fadeOut(1000); } 

但是,我應該指出,在前端執行密碼驗證是一個非常糟糕的主意

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM