0

这是我的 main.js 文件中的内容:

$("#login-form").submit(
        function() {

            $("#message").removeClass().addClass('messagebox').html(
                    '<img src="public/images/loading.gif" />Validating....').fadeIn(1000);

            $.post("login/run", {
                username : $('#username').val(),
                password : $('#password').val()
            }, function(data) {
                if (data == 'yes') {
                    // add message and change the class of the box and start
                    // fading
                    $("#message").fadeTo(
                            200,
                            0.1,
                            function() // start fading the messagebox
                            {

                                $(this).html('Logging In...').addClass(
                                        'messageboxok').fadeTo(900, 1,
                                        function() {
                                            // redirect to secure page
                                            document.location = 'secure.php';
                                        });
                            });

                } else {
                    alert(data);
                    $("#message").fadeTo(
                            200,
                            0.1,
                            function() // start fading the messagebox
                            {


                                    // add message and change the class of the
                                    // box and start fading
                                    $(this).html('Your username or password is incorrect')
                                            .addClass('messageboxerror')
                                            .fadeTo(900, 1);


                            });
                }
            });
            return false;
        }
);

这是它所指的功能(当前设置为始终回显 yes 以强制结果为正)

public function run() {
    echo 'yes';
}

我遇到的问题是当我执行警报(数据)时,警报显示我得到的输出是正确的,但是 IF 函数仅执行 ELSE 部分,无论数据是否为是。

另一个令人困惑的部分是,在我昨晚睡觉之前,这段代码运行良好——只是现在不行。

我的语法在任何地方都有问题吗?


编辑 1

修改方式:在$.post区域的末尾添加了,'json' ,在echo中添加了json_encode

main.js 到:

//login form ajax
$("#login-form").submit(
        function() {

            $("#msgbox").removeClass().addClass('messagebox').html(
                    '<img src="public/images/loading.gif" />Validating....').fadeIn(1000);

            $.post("login/run", {
                username : $('#username').val(),
                password : $('#password').val()
            }, function(data) {
                if (data == 'yes') {
                    // add message and change the class of the box and start
                    // fading
                    $("#msgbox").fadeTo(
                            200,
                            0.1,
                            function() // start fading the messagebox
                            {

                                $(this).html('Logging In...').addClass(
                                        'messageboxok').fadeTo(900, 1,
                                        function() {
                                            // redirect to secure page
                                            document.location = 'secure.php';
                                        });
                            });

                } else {
                    alert(data);
                    $("#msgbox").fadeTo(
                            200,
                            0.1,
                            function() // start fading the messagebox
                            {


                                    // add message and change the class of the
                                    // box and start fading
                                    $(this).html('Your username or password is incorrect')
                                            .addClass('messageboxerror')
                                            .fadeTo(900, 1);


                            });
                }
            }, 'json');
            return false;
        });
//end login form ajax

和功能:

public function run() {
        echo json_encode('yes');

}

编辑 2

更改为 $.ajax,使函数返回一个 JSON 编码的数组

主.js:

$("#login-form").submit(
        function() {

            $("#msgbox").removeClass().addClass('messagebox').html(
                    '<img src="public/images/loading.gif" />Validating....').fadeIn(1000);


            $.ajax({
                url: 'login/run',
                dataType: 'json',
                type: 'POST',
                data: {
                    username : $('#username').val(),
                    password : $('#password').val()
                },
                success: function(data){
                    alert(data.result);


                    if (data.result == 'yes') {
                        // add message and change the class of the box and start
                        // fading
                        $("#msgbox").fadeTo(
                                200,
                                0.1,
                                function() // start fading the messagebox
                                {

                                    $(this).html('Logging In...').addClass(
                                            'messageboxok').fadeTo(900, 1,
                                            function() {
                                                // redirect to secure page
                                                document.location = 'secure.php';
                                            });
                                });

                    } else {
                        alert(data);
                        $("#msgbox").fadeTo(
                                200,
                                0.1,
                                function() // start fading the messagebox
                                {


                                        // add message and change the class of the
                                        // box and start fading
                                        $(this).html('Your username or password is incorrect')
                                                .addClass('messageboxerror')
                                                .fadeTo(900, 1);


                                });
                    }



                    //return false; 
                }
            });


            return false;
        });

功能:

public function run() {
    $result = array('result' => 'yes');
    echo json_encode($result);  
}
4

0 回答 0