我的PHP代码应该返回sql查询的json对象,但它总是抛出错误"意外的输入结束"。我注意到如果我不使用变量$ row,它不会失败。以下是代码片段:
PHP:
require("pw.php");
class homework {
public $fach;
public $datum;
public $aufgabe;
public function __construct($fach, $datum, $aufgabe) {
$this->fach = $fach;
$this->datum = $datum;
$this->aufgabe = $aufgabe;
}
}
$connection = mysqli_connect($adrs, $usr, $pw, $db);
if(mysqli_connect_errno()) {
die(json_encode(mysqli_connect_error()));
}
if($_POST["feed"] == "hausaufgaben") {
$query = "SELECT fach, datum, aufgabe FROM hausaufgaben WHERE fachgruppe != '";
if($_POST["fremdsprache"] == "latein") {
$query .= "französisch";
}
else {
$query .= "latein";
}
$query .= "' AND fachgruppe != '";
if($_POST["englisch"] == "koch") {
$query .= "schopper";
}
else {
$query .= "koch";
}
$query .= "' AND datum > '" . date("Y-m-d") . "' ORDER BY datum ASC;";
$result = $connection->query($query);
$data = [];
while($row = $result->fetch_row()) {
array_push($data, new homework($row[0], $row[1], $row[2]));
}
echo json_encode($data);
$result->close();
}
$connection->close();
?>
Jquery的:
$.ajax({
type: "POST",
url: "php/getFeed.php",
cache: false,
dataType: "json",
data: {feed: "hausaufgaben", fremdsprache: this.fremdsprache, englisch: this.englisch}
})
.done(function(data) {
alert(typeof(data));
document.getElementById("temp").innerHTML = data;
if(typeof(data) != "Object") {
console.log("Error: " + data);
alert("iwas?");
this.hausaufgabenError = true;
this.hausaufgaben = [];
alert(this.hausaufgaben + "\n\n" + this.hausaufgaben.length);
}
else {
this.hausaufgabenError = false;
this.hausaufgaben = data;
}
})
.fail(function(jqXHR, textStatus, error) {
console.log("error: " + error);
alert("iwas?");
this.hausaufgabenError = true;
this.hausaufgaben = [];
alert(this.hausaufgaben + "\n\n" + this.hausaufgaben.length);
});
我希望有人可以帮助我,因为我完全陷入困境:(
编辑:在Mozilla中,它丢失了错误SyntaxError:JSON.parse:JSON数据的第1行第1列的意外数据结束。
答案 0 :(得分:0)
在jquery中,命令$.parseJSON('');
会产生您遇到的错误。此外,如果给予JSON以外的其他东西,parseJSON也会失败。所以我的猜测是你的php页面显示错误,没有返回输出,或返回与其他输出混合的JSON。
要做的是:
在浏览器中获取php页面,而不是通过ajax,并查看输出。
或