Javascript Ajax事件只工作一次

Javascript Ajax事件只工作一次,javascript,jquery,ajax,Javascript,Jquery,Ajax,当我输入错误的详细信息并运行它时。它会弹出错误消息,但如果我输入正确的详细信息并再次单击“运行”。“登录”按钮变为“连接…”,但随后不会发生其他任何事情 $(document).ready(function() { var width = ( $(".main").width() - 5); if (width < 300) { $(".logo-img").css({"width":width}); }; $("#error").hid

当我输入错误的详细信息并运行它时。它会弹出错误消息,但如果我输入正确的详细信息并再次单击“运行”。“登录”按钮变为“连接…”,但随后不会发生其他任何事情

$(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');
                    };
                }
            });
        });
    });
});
$(文档).ready(函数(){
变量宽度=($(“.main”).width()-5);
如果(宽度<300){
$(“.logo img”).css({“width”:width});
};
$(“#错误”).hide();
$(函数(){
$('#login')。在('click',函数(e){
e、 预防默认值();
var token=$('#token').val();
var username=$('#username').val();
var password=$('#password').val();
var memory=$('#memory:checked').val();
$.ajax({
url:'core/functions/ajaxLogin.php',
方法:“POST”,
数据:{'username':用户名,
“密码”:密码,
“记住”:记住,
“token”:token},
数据类型:“html”,
cache:false,
beforeSend:function(){$('#login').val('Connecting…')},
成功:功能(数据){
如果(数据==“成功”){
setTimeout(“window.location.href='backorderbook';”,500);
}else if(数据=='userorpass'){
$(“#错误”).fadeIn();
$(“#错误消息”)
.html('用户名或密码输入不正确');
$('#error').delay(3500).fadeOut();
$('#login').val('登录');
};
}
});
});
});
});

使用Fiddler运行函数。。和/或将错误参数添加到ajax。。。很可能您的web请求没有成功。

工作一次背后的原因

当您的ajax启动时,首先要做的是显示连接。。然后,当你得到的响应是
data
时,你的语句会说

if data == success //redirects

elseif data == userpass //show you have invalid username/password and clear html
那么,如果您的数据不是succes/userpass呢

它将只运行您的ajax
beforeSend()
,而不会删除您认为只运行一次的连接


我建议您的数据应该是一个对象,并检查上面的消息是否有错误,简言之,将其放在后端,只需jquery显示消息,当登录页面加载并使用Ajax发送时,会生成一个令牌。但是我的PHP令牌系统不喜欢重复发送相同的令牌并阻止请求。

您的问题是什么?你做了什么来调试你的代码?