大家好我想从服务器获取json响应,但是我的服务器发送错误的数组响应,我做错了,为什么我得到这个响应:
{
"error": false,
"status": 200,
"news": {
"0": {
"id": 30
},
"1": {
"id": 28
},
"2": {
"id": 32
},
"3": {
"id": 31
}
}
}
这是我的PHP代码:
<?
require_once '../include/DBHandler.php';
require '.././libs/Slim/Slim.php';
\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
$app->get('/main', function() {
$response = array();
$db = new DBHandler();
$result = $db->getMainNews();
$response["error"] = false;
$response["status"] = 200;
$response["news"] = array();
while($new = $result->fetch_assoc()) {
$tmp = array();
$tmp["id"] = $new["id"];
array_push($response["news"], $tmp);
}
}
);
$app->run();
答案 0 :(得分:1)
当您应该使用嵌入式响应对象时,您正尝试手动设置响应。
请参阅slim manual中的示例:
例如:
$app->response->headers->set('Content-Type', 'application/json');
$return = array();
$db = new DBHandler();
$result = $db->getMainNews();
$return["news"] = array();
while($new = $result->fetch_assoc()) {
$tmp = array();
$tmp["id"] = $new["id"];
array_push($return["news"], $tmp);
}
$app->response->body(json_encode($return));
答案 1 :(得分:0)
这能满足您的需求吗?
$response = array();
$db = new DBHandler();
$result = $db->getMainNews();
//$response["error"] = false;
//$response["status"] = 200;
$response["news"] = array();
while($new = $result->fetch_assoc()) {
$tmp = array();
$tmp["id"] = $new["id"];
array_push($response["news"], $tmp);
}
答案 2 :(得分:0)
我现在得到了同样的错误。我仔细调试并弄清楚罪魁祸首是行
require_once '../include/DBHandler.php';
由于某种原因,添加此行时,slim会在json响应中添加额外的“{”或“}”。我不能再使用Slim了,因为你需要至少一个这样的语句来使用其他php类文件