Ajax事件只能运行一次

3

当我输入错误的详细信息并运行它时,它会弹出错误消息,但如果我然后输入正确的详细信息并再次点击运行它,登录按钮会像应该的那样更改为“连接中...”,但之后什么也不会发生。

$(document).ready(function() {

    var width = ( $(".main").width() - 5);
    if (width < 300) {
        $(".logo-img").css({"width":width});
    };

    $("#error").hide();

    $(function() {
        $('#login').on('click', function(e){
            e.preventDefault();

            var token = $('#token').val();
            var username = $('#username').val();
            var password = $('#password').val();
            var remember = $('#remember:checked').val();

            $.ajax({
                url: 'core/functions/ajaxLogin.php',
                method: 'POST',
                data: { 'username' : username,
                        'password' : password, 
                        'remember' : remember, 
                        'token' : token },
                dataType: 'html',
                cache: false,
                beforeSend: function() { $('#login').val('Connecting...') },
                success: function( data ) {
                    if (data == 'success') {
                        setTimeout( "window.location.href='backorderbook';", 500 );
                    } else if( data == 'userorpass' ) {
                        $('#error').fadeIn();
                        $('#error_message')
                           .html('username or password were entered incorrectly');
                        $('#error').delay(3500).fadeOut();
                        $('#login').val('Sign In');
                    };
                }
            });
        });
    });
});

1
你有什么问题?你已经做了哪些调试代码的工作? - Felix Kling
3个回答

1

工作一次的原因。

当您的ajax触发时,首先要做的是显示连接状态。然后当您收到响应(即data),您的语句会说:

if data == success //redirects

elseif data == userpass //show you have invalid username/password and clear html

如果您的数据不成功或者用户密码错误,会触发ajax的beforeSend(),但不会删除连接,即看起来只运行一次。

我建议您的数据应该是一个对象,并检查其中是否有错误消息,简而言之,将其放置在后端并使用jQuery显示该消息。


0

当登录页面加载并通过Ajax发送时,会生成一个令牌。但是我的PHP令牌系统不喜欢重复发送相同的令牌并阻止请求。


-2

使用Fiddler运行您的函数..并/或将错误参数添加到您的ajax中...很可能您的Web请求不成功。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接