错误“语法错误:“[对象对象]”不是有效的 JSON”

问题描述 投票:0回答:3

我对以下代码有问题。 console.log 输出为:

我通过 JavaScript Ajax 请求请求的 URL 是“login.php”:

 <?php include('init.php');
    use Login\LoginService;

    #include(__DIR__.'/Login/LoginService.php');

    global $pdo;
    session_start();

    $username = $_POST['username'];
    $pass = $_POST['password'];
    if (!empty($username)) {
        $test = new LoginService();
        $user = $test->getUsersLogin($username);
        if (!empty($user) && $user[0]['login'] == $username) {
            $json = json_encode(array("success" => 1));
            echo $json;
        } else {
            $json = json_encode(array("success" => 0));
            echo $json;
        }
    }
    ?>

我通过 JavaScript 进行的 Ajax 请求:

$(() => {
    $('.login-form').on('submit', function (e) {
        e.preventDefault();

        $.ajax({
            type: "POST",
            dataType: "json",
            timeout: 500,
            url: '/src/login.php',
            data: $(this).serialize(),

            success: (data) => {
                try {
                    var jso = JSON.parse(data);
                    console.log(jso);
                } catch (e) {
                    console.log(e);
                    return false;
                }
            },
            error: (data) => {
                console.log(JSON.parse(data));
            }
        });
    });
});

为什么 PHP

{"success":1}
的响应不正确?有什么问题吗?

语法错误:“[object Object]”不是有效的 JSON

javascript php jquery json ajax
3个回答
26
投票

如果你写

dataType: "json"
,那么 jQuery 会在到达“成功”函数之前自动将你的响应解析为 JSON。这在 jQuery $.ajax
 文档
中进行了描述。

因此,

data

已经是一个对象。您无法将对象传递给 JSON.parse()
 - 它需要一个字符串。

而不是

var jso = JSON.parse(data); console.log(jso);
你可以直接写

console.log(data);
    

0
投票
尝试这样做以避免此错误:

myFunction(data: string) { try { JSON.parse(data); console.log(data); } catch (e) { console.log(e); } }
    

0
投票
Dans ce cas-ci comment faut-il le faire const response = wait createPayment(billingData); pour éviter l'erreur suivante [object Object]

© www.soinside.com 2019 - 2024. All rights reserved.