JSON返回不起作用

时间:2013-10-28 23:40:08

标签: javascript php jquery ajax json

我只是做了一个简单的登录脚本,但通过ajax。

我已经在其他地方的javascript方面使用了相同的脚本并且一切都很好,但这似乎不适用于我现在尝试的内容。

所以,我正在使用它来回报:

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

然后抓住这个回报:

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

然而,发送回报时没有任何反应。我已经删除了javascript端,login.php页面显示它正在发送loginSuccess = True的响应。

不知道为什么它会在其他脚本上工作,但没有发生任何事情。

这是完整的javascript(我已经删除了验证以使其更短):

// 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' ) ;
    }
}

 ?> 

很抱歉这个冗长的问题,不确定是否可以看到这段代码是否有错,但如果可以,请感谢您的帮助。

1 个答案:

答案 0 :(得分:-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