My PHP code should return a json object of a sql query, but it always throws the error "unexpected end of input". I noticed it doesn't fail if I don't use the variable $row. Here is a snippet of the code:
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);
});
I hope someone can help me out, because I'm completely stuck :(
Edit: In Mozilla, it thows the error SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data.