php slim array错误的响应

时间:2014-06-03 16:48:11

标签: php api slim

大家好我想从服务器获取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();

3 个答案:

答案 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类文件