【发布时间】:2021-01-24 16:03:34
【问题描述】:
我在旧系统上工作 - laravel 4.1/4.2 - 我的控制器返回数字作为响应:
return 4;
但浏览器显示 Content-Type: text/html(不是 json)并且调试栏还向该响应添加了一些 html。
当我从 laravel doc 尝试这个时:
return Response::json(['result' => 4 ]);
我得到错误(我有use Symfony\Component\HttpFoundation\Response;的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,所以我们不应该混合这两个框架版本
【问题讨论】:
-
我不知道这种语法在 Laravel 4 中是否有效,但在最近的版本中它通常以
return response()->json(['result' => 4], 200);的形式完成。Response::json()不起作用似乎很奇怪,除非您的 use 语句是错误的。我想应该是use Response;(门面),而不是use Symfony\Component\HttpFoundation\Response;。 -
这能回答你的问题吗? Response::json() - Laravel 5.1
-
@TimLewis
use Response;和Response::json(["result"=>4]);作品 - 请写下您的评论作为答案 - 我会接受它 -
回复:update2; Laravel 通常非常擅长向后兼容。使用
Response::json()的 Laravel 5 解决方案问题的答案之一有效,因为这是 Laravel 4 语法,它保留在 Laravel 5 及更高版本中。response()->json()的实际解决方案将不起作用,因为这些是在 Laravel 5 中引入的 :) 你通过Call to undefined function App\Controllers\Api\response()错误确认了这一点
标签: json laravel httpresponse