Laravel 5.2作为JSON没有返回响应

时间:2016-06-30 11:12:51

标签: php json laravel return echo

如果我尝试使用return response()->json($categorie);返回JSON-String,我会得到一个空响应。 如果我为return替换echo,那么我会得到 HTTP/1.0 200 OK Cache-Control: no-cache Content-Type: application/json {"id":5,"name":"blah","parent":4,"visible":"yes","position":0,"created_at":"2016-06-29 15:23:25","updated_at":"2016-06-29 15:23:25"}作为浏览器输出。

我正在使用Laravel 5.2。 这是完整的代码:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Categories;

class ApiController extends Controller
{
    public static function categorieGetById($id) {
        $categorie = Categories::find($id);
        echo response()->json($categorie);
        // return response()->json($categorie);
    }
}

更新:控制器什么都不返回。每个return产生一个空输出。 为什么呢?

2 个答案:

答案 0 :(得分:1)

您应该使用toJson()方法。

$categorie = Categories::find($id)->toJson();
echo $categorie;  // your json output
return $categorie; // same json output
  

toJson方法将集合转换为JSON。

在您当前的代码中,

$categorie = Categories::find($id);
return response()->json($categorie);  // your json output with return

注意: - 您必须在此处写下return

在上面的代码中,如果你写 echo

echo response()->json($categorie);

然后会显示

HTTP/1.0 200 OK Cache-Control: no-cache Content-Type: application/json {"id":5,"name":"blah","parent":4,"visible":"yes","position":0,"created_at":"2016-06-29 15:23:25","updated_at":"2016-06-29 15:23:25"}

答案 1 :(得分:0)

来自http://laravel-tricks.com/tricks/return-json-response的qoute:

  

在官方文档:http://laravel.com/docs/responses#special-responses中,需要做Response :: json(...)来创建json响应。实际上,如果返回的值是arrayableinterface或jsonableinterface的数组或实例,例如eloquent model,那么你可以返回它,它会成为一个json,神奇地。