Laravel 4返回json作为响应



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

return 4;

但浏览器显示Content-Type: text/html(而不是json(,调试器也向该响应添加了一些html。

当我尝试这个从laravel文档:

return Response::json(['result' => 4 ]);

我得到错误(我有use SymfonyComponentHttpFoundationResponse;的php控制文件(

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

我也尝试使用

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

但我有

HTTP状态代码";0";无效。

如何获得json响应(没有调试器的东西(?


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

当我尝试(使用和不使用use Response(时

return response()->json(['result' => 4], 200);

我得到

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


Update2:有人认为Laravel 5已经有了答案-它实际上在L4中有效-但我认为这是意外的-通常L5解决方案在L4上不起作用,所以我们不应该混合这两个框架版本

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

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

use Response; // IlluminateSupportFacadesResponse (or Laravel 4.2 equivalent)
class ExampleController extends Controller {
public function exampleRequest(){
return Response::json(['result' => 4], 200);
}
}

旁注;CCD_ 8";作品";,正如Laravel猜测Controllers中返回语句的内容类型一样,但最好是特定的,以避免任何问题。


更新:您可以使用快捷方式,该快捷方式在没有use Response语句的情况下工作

return Response::json(4);`

我意外地发现,当我返回数组时

return ['result' => 4 ];

然后响应有Content-Type: application/json,没有调试栏的东西-我不知道为什么-但它有效:(

相关内容

  • 没有找到相关文章

最新更新