0

我在$.ajax这里的通话中有一个奇怪的错误:

//CHECK USERNAME
$('#username').focusout(function() {
    var id = $(this).attr('id');
    var username = ($(this).val());
    $(this).removeClass('hint').removeClass('hint_validated');
    if (!$(this).val() || !regexUser($(this).val())){
        //INVALID
        $('#'+id+'_hint').hide().addClass('hint').show().html(usernameInvalid);
    }else{
        //VALID -> CHECK USERNAME FROM DB IF CONFIG = TRUE
        if (checkUsername == true){
            //LOADING FROM DB
            $('#'+id+'_hint').hide().addClass('hint_check').show().html(usernameCheck);
            $.ajax({
                cache: false,
                type: 'POST',
                url: 'classes/ajax_check.php', //all that does currently is echo "USERNAMEVALID"
                data: {username: username},
                success: function(response){
                    if (response == "USERNAMEVALID") {
                        $('#'+id+'_hint').hide().removeClass('hint_check').addClass('hint_validated').show().html(usernameValid);
                    }else{
                        alert("ERROR");
                    };                      
                },
                error: function(){
                    $('#'+id+'_hint').hide().removeClass('hint_check').addClass('hint').show().html(usernameError);
                }
            });
        }else{
            $('#'+id+'_hint').hide().addClass('hint_validated').show().html(usernameValid);
        }
    }
});

成功函数被调用,但 IF 子句总是抛出 FALSE。为什么?

如果成功功能只是alert (response);它实际上会发出警报USERNAMEVALID

我以前使用过这些功能,但在这里找不到错误...感谢您的阅读,感谢您的帮助。

欢呼

Primus

4

1 回答 1

2

检查空行。看到有区别:

alert("Hi\n");
alert("Hi");

你看到的一样,但事实并非如此。尝试这个:

alert(encodeURI("Hi\n"));
alert(encodeURI("Hi"));

在哪里,它以这种方式发出警报:

Hi%0A
Hi

PS:如果您使用的是IE以外的其他浏览器,请console.log()使用alert(). 这样您就可以检查正在打印的内容和未打印的内容!

小提琴:http: //jsfiddle.net/XaT6S/

于 2012-10-07T16:59:44.587 回答