2013-10-28 2 views
1

메신저 단순한 로그인 스크립트를 사용하고 있지만 아약스를 사용하고 있습니다.JSON 반환이 작동하지 않습니다.

나는 다른 곳에서 자바 스크립트 측면에 대해 동일한 스크립트를 사용했지만 괜찮 았지만 지금은 어떤 것이 시도하고 있는지는 잘 모르겠다.

그래서, 나는 반환이 사용하고 있습니다 : 다음

$return['loginSuccess'] = true; 
    echo json_encode($return); 

및 반환이를 잡으려고 : 리턴 보낼 때

if (response.loginSuccess === true) { 
     window.location = "index.php"; 
    } else { 
     // error 
    } 

그러나, 아무 일도 발생하지 않습니다. 나는 자바 스크립트 측면을 제거했으며 login.php 페이지는 loginSuccess = True의 응답을 보내고 있음을 보여줍니다.

왜 다른 스크립트에서 작동하는지 알지 못하지만 실제로는 아무 것도 없습니다. 여기

전체 자바 스크립트입니다 (나는 그것을 짧게 유지하기 위해 검증을 제거한) :

// JavaScript - Login AJAX 

$(document).ready(function(){ 

// When the form is submitted 
$('.loginbutton').click(function(){ 

    var check = true; 

    // Get the values 
    var usernamelogin = $('.logininputuser').val(); 
    var passwordlogin = $('.logininputpass').val(); 

    // Database validation checks 
    if (check === true) { 
    $.ajax({ 
    type: "POST", 
    url: "process/login.php", 
    data: $(".formlogin").serialize(), 
    dataType: "json", 
    success: function(response){ 

    if (response.loginSuccess === true) { 
     window.location = "index.php"; 
    } else { 
     // error 
    } 

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

그리고 PHP : 그것의 가능한 경우

, 긴 질문에 대한
<?php 
header('Content-Type: application/json'); 
require("../common.php"); 

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 

if(!empty($_POST['loginbutton'])) { 
    $query = " SELECT id, username, password, salt, email FROM users WHERE username = :username "; 

    // Create bound values 
    $query_params = array( 
     ':username' => $_POST['username'] 
    ); 

    try 
    { 
     $stmt = $db->prepare($query); 
     $result = $stmt->execute($query_params); 
    } 
    catch(PDOException $ex) 
    { 
     die("Failed to run query: " . $ex->getMessage()); 
    } 

    $login_ok = false; 

    $row = $stmt->fetch(); 
    if($row) 
    { 

     $check_password = hash('sha256', $_POST['password'] . $row['salt']); 
     for($round = 0; $round < 65536; $round++) 
     { 
      $check_password = hash('sha256', $check_password . $row['salt']); 
     } 

     if($check_password === $row['password']) 
     { 
      $login_ok = true; 
     } 
    } 

    // Sucsess for login 
    if($login_ok) 
    { 
     unset($row['salt']); 
     unset($row['password']); 
     $_SESSION['user'] = $_POST['username']; 
     $_SESSION['logged'] = "1"; 
     $return['loginSuccess'] = true; 
     echo json_encode($return);     
    } 
    else 
    { 
     die(); 
    } 

    } else if(!empty($_POST['regbutton'])) { 

     header('Location: ../register.php') ; 
    } 
} 

?> 

죄송 확실하지 가능하다면이 코드에 무슨 문제가 있는지 보시거나 어떤 도움을 주셔서 감사합니다.

+0

확인, 다음을 디버깅하려고합니다. – N20084753

+0

ajax에서'console.log (응답)'을 보냈을 때 디버거에 남긴 메세지는 무엇입니까? – Newben

+0

btw'var_dump ($ _ POST [ 'username'])'을 반환하는 것은 무엇입니까? – Newben

답변

-1

나는 당신이 json으로 인코딩 된 문자열을 디코딩하지 않았다고 생각하지 않으므로 걱정하지 않아도된다. 이 코드를보십시오.

var obj = jQuery.parseJSON('{ "name": "John" }'); 
alert(obj.name === "John") 

여기서 '{ "name": "John"}'은 사용자의 응답입니다. 아약스에 대한 오류 콜백을 성공 응답에 로그를 추가하고 또한 추가로 더 참고로

, http://api.jquery.com/jQuery.parseJSON/ 또는 Decode JSON with jQuery/AJAX

관련 문제