我在旧系统上工作-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
,没有调试栏的东西-我不知道为什么-但它有效:(