【问题标题】:php slim array wrong responsephp slim数组错误响应
【发布时间】:2014-07-24 02:43:30
【问题描述】:

大家好,我正在尝试从服务器获取 json 响应,但是我的服务器发送了错误的数组响应,我做错了什么,为什么我得到这个 wring 响应:

{
"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();

【问题讨论】:

  • why i get this wring response - 什么是正确响应?
  • 正确的数组是这样的:[news: {id: 1}
  • 我猜这是正确的 json 语法。检查JSONLint
  • 请编辑您的问题以获得正确的答复。
  • 我想你想要{news:[{id:1},{id:2}]}

标签: php api slim


【解决方案1】:

我现在遇到了同样的错误。我仔细调试了一下,发现罪魁祸首是这条线

require_once '../include/DBHandler.php';

由于某种原因,当添加此行时,slim 会在 json 响应中添加额外的 '{' 或 '}'。我不能再在 Slim 上工作了,因为您至少需要一个这样的语句才能使用其他 php 类文件

【讨论】:

    【解决方案2】:

    当您应该做的是使用嵌入式响应对象时,您正在尝试手动设置响应。

    查看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));
    

    【讨论】:

      【解决方案3】:

      这能满足你的需要吗?

      $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);
      }
      

      【讨论】:

        猜你喜欢
        • 2017-05-31
        • 1970-01-01
        • 1970-01-01
        • 2017-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-16
        • 1970-01-01
        相关资源
        最近更新 更多