Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX正在运行错误函数而不是成功函数_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript AJAX正在运行错误函数而不是成功函数

Javascript AJAX正在运行错误函数而不是成功函数,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我正在尝试让我的数据库登录工作。 但是我的AJAX调用一直在运行错误函数而不是成功函数,我很难理解为什么 function doLogin() { var formData = ConvertFormToJSON("#login-form"); console.log('login data to send: ', formData); $.ajax({ url: 'php/login-session.php', ty

我正在尝试让我的数据库登录工作。 但是我的AJAX调用一直在运行错误函数而不是成功函数,我很难理解为什么

function doLogin() {
    var formData = ConvertFormToJSON("#login-form");
    console.log('login data to send: ', formData);

    $.ajax({
        url: 'php/login-session.php',
        type: 'POST',
        dataType: 'JSON',
        data: formData,
        success: function(logindata) {
            console.log('login data returned: ', logindata);

            var status = logindata['status'];
            if(status == "fail"){
                $("#loginerror").html(logindata['msg']);
                $("#loginerror").cs('display', 'block');
            } else {
                getUserProfileInfo();
                $("login-form").trigger('reset');
            }
        },
        error: function(jqXHR, textStatus, errorThrown){
            console.log(jqXHR.statusText, textStatus);
        }
    });
}
控制台记录:

要发送的登录数据:对象{loginusername:test,loginpassword:test}

OK解析器错误

我的login-session.php代码是:

<?php

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

$DBhost = 'localhost';
$DBuser = 'root';
$DBpass = 'root';
$DBname = 'anamadeus';

$methodType = $_SERVER['REQUEST_METHOD'];
$data = array('status' => 'fail', 'msg' => '$methodType');

if($methodType === 'POST'){
    //Check AJAX
    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

        if(isset($_POST['loginusername']) && !empty($_POST['loginusername']) && isset($_POST["loginpassword"]) && !empty($_POST["loginpassword"])){

            // get the data from the post and store in variables
            $username = $_POST["loginusername"];
            $password = $_POST["loginpassword"];

            try {
                $conn = new PDO('mysql:host=$DBhost;dbname=$DBname', $DBuser, $DBpass);
                $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                $sql = 'SELECT * FROM user WHERE username = :log AND password = :pwd';

                $statement = $conn->prepare($sql);
                $statement->execute(array(":log" => $username, ":pwd" => $password));

                // this should be one if there's a user by that user value and password value
                $count = $statement->rowCount();

                if($count > 0){
                    $rows = $statement->fetchAll(PDO::FETCH_ASSOC);
                    $returnedUsername = $rows[0]['username'];
                    $returnedPassword = $rows[0]['password'];

                    $_SESSION['username'] = $returnedUsername;
                    $_SESSION['loggedin'] = true;

                    $sid=session_id();
                    $data = array("status" => "success", "sid" => $sid);
                } else {
                    $data = array("status" => "fail", "msg" => "User name and/or password not correct.");
                }
            } catch(PDOException $e) {
                $data = array("status" => "fail", "msg" => $e->getMessage());
            }

        } else {
            $data = array("status" => "fail", "msg" => "Either login or password were absent.");
        }

    } else {
        // not AJAX
        $data = array("status" => "fail", "msg" => "Has to be an AJAX call.");
    }
} else {
    // simple error message, only taking POST requests
    $data = array("status" => "fail", "msg" => "Error: only POST allowed.");
}

echo json_encode($data, JSON_FORCE_OBJECT);

?>
请帮帮我


我正在MAMP上运行我的数据库和php。Epascarello得到了正确的答案,我不得不将单引号改为双引号。

您是否确保没有恢复无效的JSON?当HTTP状态代码为2xx(如200或201)时,success函数将运行,仔细检查web浏览器consoleparse错误的网络选项卡中的响应HTTP状态-服务器返回的不是json。e、 g.在json内容之前/之后嵌入了php警告/错误,这使得json非法。您很可能没有返回有效的json。钥匙需要双引号。从服务器返回的确切内容。查看网络面板并检查请求的响应。更正$loginerror.css'display','block';不检查会话,只启动会话。