【问题标题】:Not getting error message in ajax() method jquery在 ajax() 方法 jquery 中没有收到错误消息
【发布时间】:2014-02-08 16:11:21
【问题描述】:

假设:
1).我的登录表单有两个字段注册,一个名为登录(提交)的按钮的密码
2)。我的后端脚本 login.php 很好,没有错误
这是我通过登录表单发送数据并将其与后端进行比较的代码,现在的问题是当我提供登录所需的正确密码和注册时,事件成功完成,但是当我提供错误的凭据时它没有显示错误消息如 ajax() 中显示的错误:function()。虽然当我双击登录按钮时该消息会显示一段时间,然后页面会自动刷新。当为注册提供错误密码时,谁能帮我获取错误消息

$(function(){
/*$('#err').hide();*/
$('.err').hide();
/*$('.error').hide();*/
$('#eno').blur(function(){
    var eno = $('input#eno').val();
    if(eno == ""){
        $('#err_eno').show();
        $('input#eno').focus();
        return false;
    }else{
        $('#err_eno').hide();
    }   
});

$('#pw').blur(function(){
    var pw = $('input#pw').val();
    if(pw == ""){
        $('#err_pw').show();
        $('input#pw').focus();
        return false;
    }else{
        $('#err_pw').hide();
    }
});

$('#submit_btn').click(function(){

    var dataString = $('#log').serialize();
//alert (dataString);return false;  
$.ajax({
            type:"POST",
            url:"script/login.php",
            data:dataString,
            success:function(){
                    window.location='profile.php';
            },
            error:function(){
                $('#err').html("<p>Provide right combination</p>");
            }
        });
return false;
}); 

});

【问题讨论】:

    标签: php jquery ajax login error-handling


    【解决方案1】:

    The error function in called when a request fails,在您的情况下,ajax 函数已成功执行。您需要做的是将 ajax 函数的 dataType 属性设置为 json 并将 json 数组作为来自服务器的响应传递。查看更多信息here

    下面的例子:

    $.ajax({
                type:"POST",
                url:"script/login.php",
                data:dataString,
                dataType:"json",
                success:function(data){
                        if(data.error==true){     
                          $('#err').html("<p>Provide right combination</p>");
                        }else{
                            window.location='profile.php';
                        }
                },
                error:function(){
    
                }
            });
    

    });

    你的 login.php

    //if success 
     echo json_encode(array('success'=>TRUE));
    //else if password failed
    echo json_encode(array('error'=>TRUE));
    

    我希望这会有所帮助。

    【讨论】:

    • 下面是我的 login.php,我在其中设置名为 'eno' 的 cookie,这样当用户在成功登录后再次尝试登录时,如果未登录,他/她将直接重定向到 profile.php出来了,但有些是怎么不工作的。
    • &lt;?php include "../db/connect.php";session_start(); $password = $_POST['pw']; $eno = $_POST['eno']; $password_hash = md5($password); if(!empty($eno) &amp;&amp; !empty($password)) { $query ="select * from users where eno = '$eno' AND password = '$password_hash'"; $result = $db-&gt;query($query); if($result-&gt;num_rows) { $_SESSION['login'] = $_POST['eno']; if($_POST['cb']) { setcookie('eno',$_POST['eno'],time()+3600); } print "1"; } else { setcookie('eno',$_POST['eno'],time()-3600); session_regenerate_id(); session_destroy(); print ""; } } ?&gt;
    【解决方案2】:

    你的 Success 函数总是被执行,试试下面的实现:

    $.ajax({
                type:"POST",
                url:"script/login.php",
                data:dataString,
                success:function(x){
                if (x == 1)
                {
            window.location='profile.php';
                }
                else
                {
            //Handle Error Here
                    $('#err').html("<p>Provide right combination</p>");
    
                }
              }  
            });
    

    login.php

    <?php
    
    //execute code
    
    //if success 
     print "1";
    //else
    print "";
    ?>
    

    【讨论】:

    • 下面是我的 login.php,我在其中设置名为 'eno' 的 cookie,这样当用户在成功登录后再次尝试登录时,如果未登录,他/她将直接重定向到 profile.php出来了,但有些是怎么不工作的。
    • &lt;?php include "../db/connect.php";session_start(); $password = $_POST['pw']; $eno = $_POST['eno']; $password_hash = md5($password); if(!empty($eno) &amp;&amp; !empty($password)) { $query ="select * from users where eno = '$eno' AND password = '$password_hash'"; $result = $db-&gt;query($query); if($result-&gt;num_rows) { $_SESSION['login'] = $_POST['eno']; if($_POST['cb']) { setcookie('eno',$_POST['eno'],time()+3600); } print "1"; } else { setcookie('eno',$_POST['eno'],time()-3600); session_regenerate_id(); session_destroy(); print ""; } } ?&gt;
    • 很抱歉格式错误,但我是新来的,不知道如何在评论中发布代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    相关资源
    最近更新 更多