PHP输入结束错误


PHP unexpected end of input error

我的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错误。解析:JSON数据的第1行第1列数据的意外结束

在jquery中,命令$.parseJSON('');会产生您所遇到的错误。同样,如果给parseJSON提供JSON以外的东西,它也会失败。所以我的猜测是,你的php页面要么显示一个错误,没有返回输出,或返回JSON与其他输出混合。

要做的是:

  • 在浏览器中获取php页面,而不是通过ajax,并查看输出

  • 将数据类型更改为文本用于调试,并使用console.log查看实际发送到javascript代码的内容。