XMLHttpRequest的responseText在开头包含'Array()'

时间:2017-10-16 14:39:56

标签: javascript php json xmlhttprequest

从我的JavaScript客户端,我向我的PHP服务器发出请求,我希望JSON中的响应如下所示:

{"rsp":{"x":"y","w":[{"z":"a","d...

生成响应的PHP代码:

public function getResponse() {
    return json_encode($this->getListFromDB());
}

public function getListFromDB() {
    $sql = "SELECT * FROM MyTable";
    $myArray = array();
    if ($result = mysqli_query($this->dbConnection, $sql)) {
        $tempArray = array();
        while($row = $result->fetch_object()) {
            $tempArray = $row;
            array_push($myArray, $tempArray);
        }
    }

    return $myArray;
}

在PHP方面,我打印出通过json_encode()后我将发送给客户的结果,我得到:

{"rsp":{"x":"y","w":[{"z":"a","d...

正如所料。

在JavaScript方面,但是当我按如下方式打印响应时:

xmlhttp.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {
        document.write(this.responseText);
      }
};

我明白了:

Array ( ) {"rsp":{"x":"y","w":[{"z":"a","d...

这当然会导致JSON解析器失败。

为什么我在回复开始时会收到“数组()”?这是客户端问题吗?

** 发现问题 **

在生成响应之前,我在某个时刻在数组上调用了print_r()。这被附加到响应的开头。

0 个答案:

没有答案