首页 > 解决方案 > 总是收到错误:pushJsonData 中的 parsererror:SyntaxError:我的脚本中 JSON 输入 [object Object] 意外结束

问题描述

我总是在 pushJsonData 中收到 Parser 错误,我不知道为什么。

我首先只使用用户值对其进行了测试,它工作正常,但是当我尝试比用户返回 mor 时,我收到以下错误:

SyntaxError: Unexpected end of JSON input [object Object]

我的 JavaScript 代码:

$('#Login').click(function() {
    var user = $("#user").val();
    $.ajax({
        url: "src/ajax.php",
        type: "POST",
        data: { ACTION : "checkUser", USER: user},
        dataType: "json",
        success: function(data)  {
            var user = data.user;
            $('#testUser').text("Hallo " + user);
        },

        error: function(jqXHR, textStatus, errorThrown) {
            alert(textStatus + " in pushJsonData: " + errorThrown + " " + jqXHR);
        }
    });
});

我的PHP代码:

if($_POST['ACTION'] == "checkUser") {
    $checkUser      = $_POST['USER'];
    $sql            = $db->query("SELECT * FROM fm_user WHERE user = '".$checkUser."' LIMIT 1");
    $getUser        = $sql->fetch_assoc();

    $resultArray    = array(
                        "user" => $getUser['user'],
                        "isadmin" => $getUser['isadmin'],
                        "user_data" => $getUser['user_data']
                    );

    $result = json_encode($resultArray);
}

标签: javascriptphpajax

解决方案


你没有输出任何东西。但是,我不想因为错字而将其关闭为题外话,我想指出您的代码存在一些问题,这些问题不安全且效率低下。始终始终使用准备好的语句,并且无需浪费代码将数组元素放入数组中。这样的事情应该会更好:

<?php
if($_POST['ACTION'] == "checkUser") {
    $result = null;
    $checkUser = $_POST['USER'];
    $stmt = $db->prepare("SELECT user, isadmin, user_data FROM fm_user WHERE user = ? LIMIT 1");
    $stmt->bind_param("s", $checkUser);
    if ($stmt->execute()) {
        $result = $stmt->get_result();
        $getUser = $result->fetch_assoc();

        $result = $getUser;
    }
    header("Content-Type: application/json");
    echo json_encode($result);
    die();
}

未经测试,自从我使用 mysqli 以来已经很长时间了,但它应该可以工作。


推荐阅读