我总是在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);
}
你没有输出任何东西。但是,由于输入错误而不是将其视为偏离主题,我想指出代码中的一些问题,这是不安全和低效的。始终始终使用预准备语句,并且不需要浪费代码将数组元素放入数组中。这样的事情应该更好:
<?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以来已经有很长一段时间但它应该可以工作。