2014-11-12 2 views
0

이것이 작동하지 않는 이유를 알아낼 수 없거나 관련 기사를 찾을 수 없습니다. 방화 광에서 json 객체를 볼 수 있습니다. 성공 또는 실패 : 포스트 요청에서 true를 반환하므로 함수가 실행되지 않는 이유를 알 수 없습니다.AJAX 성공 또는 오류 발생하지 않음

아약스

$("#login").submit(function (e) { 
    e.preventDefault(); 

    $.ajax({ 
     url: "../process/login-process.php", 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     data: { 'username': $('[name=username]').val(), 'password': $('[name=password]').val() }, 
     beforeSend : function(){ 
      //$("#login").hide();  
     }, 
     success: function(data){ 
      window.localation=data.redirect;    
     }, 
     error: function(data) { 
      $(".error").html(''); 
      alert('wtf'); 
      if(data.empty) { 
       $(".error").html(data.empty); 
      } 
      if(data.incorrect) { 
       $(".error").html(data.incorrect); 
      }  
     } 
    }); 
}); 

PHP

<?php 
    session_start(); 
    include "../inc/connect.php"; 
    $username = mysqli_real_escape_string($con, $_POST['username']); 
    $password = mysqli_real_escape_string($con, $_POST['password']); 
    $password = hash('sha256', $password); 
    $sql = "SELECT * FROM admin WHERE username ='$username' AND password ='$password'"; 
    $result = mysqli_query($con, $sql) or die(mysqli_error($con)); 
    $row = mysqli_fetch_array($result); 
    $count=mysqli_num_rows($result); 
    if ($username == "" || $password == "") { 
     $data['empty'] = 'All fields are required.'; 
    } else if(($count==1) && ($username)) { 
     $_SESSION['user'] = $row['firstName']; 
     $_SESSION['userID'] = $row['adminID']; 
     $data['success'] = true; 
     $data['redirect'] = '../pages/dashboard.php'; 
    } else { 
     $data['success'] = false; 
     $data['incorrect'] = "Incorrect Username or Password."; 
    } 
    echo json_encode($data); 
?> 
+1

오류 메시지가 있는지 확인하십시오. – turtle

+5

'window.localation'? 이건 오타예요? – Ghost

+2

ajax 요청에서'dataType : 'Json''을 지정하고'window.localation' 대신 오타를 수정하십시오.'window.location'이어야합니다. –

답변

0

당신이 언급 된 모든 헤더없이 (이 경우, JSON) 문자열을 보내고있다. 그래서 항상 200 괜찮을거야.

따라서 오류는 발생하지 않습니다.

success: function(data){ 
     window.localation=data.redirect; <----- error here. location   
    }, 

아무 이유도 없습니다.

} else { 
    $data['success'] = false; 
    $data['incorrect'] = "Incorrect Username or Password."; 
} 

사용

} else { 
    header('HTTP/1.0 403 Forbidden'); 
    echo 'Incorrect Username or Password.'; 
    exit; 
} 

이 당신에게 403 금지 메시지를 줄 것이다 : 경우 데이터가

대신 잘못에

오류를 발생합니다.

1

  • 는 아약스 요청에 dataType: 'JSON'을 추가 또는 성공 콜백에서 $.parseJSON를 사용 success 콜백 window.location에 코드에서 수정해야 할 두 가지,

    1. 변화 window.localation을있다

    성공 전화 회신은 다음과 같아야합니다.

    success: function(data){ 
          data = $.parseJSON(data); // <- Don't use this if you add dataType: 'JSON' in ajax 
          window.location=data.redirect;  //<- Spelling corrected for location  
         } 
    
  • 관련 문제