2012-10-01 3 views
1

로그인 시스템 jQuery ajax 및 json으로 작업하고 싶습니다. 나는 성공 함수에 아무 문제도 직면하고 있지 않다. "잘못된 로그인"과 같은 사용자 정의 오류를 처리하는 방법을 알지 못합니다.jQuery ajax JSON 사용자 정의 오류 처리

여기 내 코드입니다. 제발 도와주세요.

<script> 
    $(document).ready(function(){ 
     $("#login").click(function(){ 
      if($("#defaultEmail").val() == ""){ 
       $("#defaultEmail").addClass("field-err"); 
       $("#defaultEmail").focus(); 
      }else if($("#defaultPassword").val() == ""){ 
       $("#defaultEmail").removeClass("field-err"); 
       $("#defaultPassword").addClass("field-err"); 
       $("#defaultPassword").focus(); 
      }else{ 
       $("#defaultPassword").removeClass("field-err"); 
       $('#loading').css('display', 'block'); 
       var email = $('#defaultEmail').val(); 
       var password = $('#defaultPassword').val(); 
       var queryString = "email=" + email + "&password=" + password + ""; 
       $.ajax({ 
        url: 'secureLogin.php', 
        contentType: "application/json; charset=utf-8", 
        dataType:'json', 
        async: false, 
        type:'GET', 
        data: queryString, 
        success: function(data){ 
        $('#loading').css('display', 'none'); 
        var url = "c_profile.php"; 
        $(location).attr('href',url); 
        }, 
        error: function(request,error){ 
        $('#loading').css('display', 'block'); 
        $("#log-ajax-error").append("ERROR: " + error); 
        } 
       }); 
      } 
     }); 
    }); 
</script> 

여기 내 sucureLogin.php 코드

$email = $_GET['email']; 
$password = $_GET['password']; 
$encrypted_pass = md5($password); 

    $sel = @mysql_query("SELECT `name`, `company`, `cid` FROM `company` WHERE `email` = '$email' AND `password` = '$encrypted_pass'"); 
    $count = @mysql_num_rows($sel); 
    if($count > 0){ 
     while($data = @mysql_fetch_array($sel)){ 
         // Success here 
     } 
    }else{ 
     $arr = array('a' => 'Unable to login'); 
     echo json_encode($arr); 
    } 

내가 에러로 json_encode를 던지는거야입니다. 이걸 도와주세요. 미리 감사드립니다.

답변

3

$arr = array('error' => 'Unable to login'); 
echo json_encode($arr); 

클라이언트 측

success: function(data){ 
    $('#loading').hide(); 
    if('error' in data){ 
     $("#log-ajax-error").append("ERROR: " + data.error); 
    } 
    else{ 
     var url = "c_profile.php"; 
     $(location).attr('href',url); 
    } 
}, 

ajax 요청에 오류가 발생하면 오류 콜백이 호출되므로 코드가 성공 처리기에 있어야합니다.

+0

친애하는 aziz.punjani, 모든 것이 좋습니다. 거짓 데이터를 제공하면 오류가 발생합니다. 문제는 리디렉션되지 않는 올바른 로그인으로 다시 시도하면 잘못된 데이터를 던진 후입니다. 즉 항상 if 루프로 이동합니다. 도와주세요 –

+0

** $ arr = array ('success'=> '리디렉션하는 동안 기다려주십시오 ..'); echo json_encode ($ arr); ** 오, 알겠습니다. :) 고마워요. –

1

ajax에서 오류 처리기는 사용자가 던진 오류를 구성하지 않으며 연결 오류 또는 요청과 관련된 오류를 구성합니다. 즉, 당신이 가지고있는 것처럼 오류 응답을 어떻게 보내더라도 성공 콜백을 치게 될 것입니다. 당신의 성공에

당신은 응답에 대한 몇 가지 검사를 수행해야합니다

 
success: function(data){ 

    if(data.status === false) 
    { 

     // There was an error 

    } else { 

     $('#loading').css('display', 'none'); 
     var url = "c_profile.php"; 
     $(location).attr('href',url); 

    } 

}, 

그리고 당신의 PHP 처리기

는 상태 키 추가 : 서버 측에서

 
$arr = array(
    'status' => true (or false), 
    'a' => 'Unable to login' 
);