从我的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()
。这被附加到响应的开头。