Laravel4返回json作为响应

Laravel4返回json作为响应,json,laravel,httpresponse,Json,Laravel,Httpresponse,我在旧系统上工作-laravel 4.1/4.2-我的控制器返回数字作为响应: return 4; 但浏览器会显示内容类型:text/html(不是json),debugbar也会在响应中添加一些html 当我从拉威尔那里尝试这一点时: 我得到错误(我得到了一个php控件文件使用Symfony\Component\HttpFoundation\Response;) 调用未定义的方法Symfony\Component\HttpFoundation\Response::json() 我也尝试使用

我在旧系统上工作-laravel 4.1/4.2-我的控制器返回数字作为响应:

return 4;
但浏览器会显示
内容类型:text/html
(不是json),debugbar也会在响应中添加一些html

当我从拉威尔那里尝试这一点时:

我得到错误(我得到了一个php控件文件
使用Symfony\Component\HttpFoundation\Response;

调用未定义的方法Symfony\Component\HttpFoundation\Response::json()

我也尝试使用

$response = new Response(200, array(), ['result' => 4]);
return $response->json();
但我明白了

HTTP状态代码“0”无效

如何获得json响应(没有debugbar的东西)


更新:(我测试Tim Levis评论中的命题)

当我尝试时(有和没有
使用Response

我明白了

调用未定义的函数App\Controllers\Api\response()



更新2:有人建议Laravel 5已经有了答案——它实际上在L4中工作——但我认为这是偶然的——通常L5解决方案在L4上不工作,所以我们不应该混合使用这两个框架版本

return ['result' => 4 ];
然后response有
内容类型:application/json
而没有debugbar的东西-我不知道为什么-但它可以工作:)

response::json()
应该在Laravel4.2中工作,因为5之前的版本使用Facades(
response:
)而不是全局方法(
response()

这里的主要问题是导入的
Response
类不是Facade,而是Symphony组件。要解决此问题,请使用正确的导入:

use Response; // Illuminate\Support\Facades\Response (or Laravel 4.2 equivalent)

class ExampleController extends Controller {
  public function exampleRequest(){
    return Response::json(['result' => 4], 200);
  }
}
旁注<代码>返回['result'=>4]“有效”,因为Laravel猜测控制器中返回语句的内容类型,但最好是特定的,以避免任何问题


更新:您可以使用快捷方式,该快捷方式无需使用
use Response
语句

return \Response::json(4);`

我不知道这种语法在Laravel4中是否有效,但它通常作为
return-response()->json(['result'=>4],200)来完成在较新版本中。奇怪的是,
Response::json()
不起作用,除非您的use语句是错误的。我想应该是
使用响应(外观),而不是
使用Symfony\Component\HttpFoundation\Response。这是否回答了您的问题@使用
响应带有
响应::json([“结果”=>4])工作-请写下您的评论作为答案-我将接受itRe:update2;Laravel通常非常擅长向后兼容。使用
Response::json()
回答Laravel5解决方案问题的其中一个答案是有效的,因为这是Laravel4语法,它被保存在Laravel5及以后的版本中。
response()->json()
的实际解决方案将不起作用,正如在Laravel 5:)中介绍的那样,您通过调用未定义的函数App\Controllers\Api\response()
error@KamilKiełczewski很欣赏这个快捷编辑,只需注意
json(4)
json(['result'=>4])
在尝试访问响应时可能不一样:)
use Response; // Illuminate\Support\Facades\Response (or Laravel 4.2 equivalent)

class ExampleController extends Controller {
  public function exampleRequest(){
    return Response::json(['result' => 4], 200);
  }
}
return \Response::json(4);`