PHP意外结束输入错误

时间:2015-09-07 15:52:22

标签: php mysql

我的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列的意外数据结束。

1 个答案:

答案 0 :(得分:0)

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

要做的是:

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

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