2

我有一个使用 ajax 进行 loginCheck 的表单登录,

如果我输入了错误的密码,它只会显示一条警告消息,但如果我使用正确的密码,它会将我重定向到管理页面。

问题是如果我$('html').html(data);在 ajax 中登录检查后调用,引导组件不会完美呈现。例如,如果我单击下拉菜单,则不会发生任何事情,但如果我直接管理页面,则一切正常。

$('html').html(data);在使用引导程序时使用有什么问题吗?

代码:

$(document).ready(function() {  
    $('#formlogin').on('submit', function(e) {  
        // don't let the browser submit the form 
        e.preventDefault();  
        var login = $('#usuario').val();
        var senha = $('#senha').val();;
        if(login.length > 1 && senha.length > 1) {
     $.ajax({  
            url: 'http://localhost:8080/Test/doLogin',  
            async: true,  
            cache: false,  
            type: 'POST',  

           data: {"usuario.nome":$("#usuario").val(), "usuario.senha":$("#senha").val(),
               dataType: 'text',
           },
           success: function(data) {

        $('html').html(data);
           }



        });

        } else {
            alert("Login e Senha devem ser preenchidos.");
        }
        return false;
    });  

});  
4

1 回答 1

2

问题似乎是您只是将 html 直接注入页面。为了让 Bootstrap 初始化它的所有组件,例如下拉菜单,它会在页面加载时运行一些自己的 JavaScript。

如果页面已经加载并且您只是更改 DOM,则不会触发。您可以手动初始化所​​有组件,例如$('.dropdown-toggle').dropdown()在注入 HTML 之后,但正如 RoToRa 在评论中提到的那样,将整个 html 文档注入您的页面似乎是个坏主意。仅仅重定向到相关页面会更安全、更容易维护、更不容易出错,并且更便于访问。

于 2014-06-11T08:41:00.833 回答