始终在pushJsonData中收到错误:parsererror:SyntaxError:我脚本中JSON输入[object Object]的意外结束

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

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

我只使用用户值测试它并且它工作正常,但是当我尝试比用户更好地回复时,我收到以下错误:

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);
}
javascript php ajax
1个回答
0
投票

你没有输出任何东西。但是,由于输入错误而不是将其视为偏离主题,我想指出代码中的一些问题,这是不安全和低效的。始终始终使用预准备语句,并且不需要浪费代码将数组元素放入数组中。这样的事情应该更好:

<?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以来已经有很长一段时间但它应该可以工作。

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