Laravel 4 return json 作为回应
Laravel 4 return json as response
我在旧系统上工作 - laravel 4.1/4.2 - 我的控制器 returns 响应编号:
return 4;
但浏览器显示 Content-Type: text/html
(不是 json)并且调试栏也会向该响应添加一些 html。
当我从 laravel doc:
尝试这个
return Response::json(['result' => 4 ]);
我收到错误消息(我有 use Symfony\Component\HttpFoundation\Response;
的 php 控制器文件)
Call to undefined method Symfony\Component\HttpFoundation\Response::json()
我也尝试用
$response = new Response(200, array(), ['result' => 4]);
return $response->json();
但我明白了
The HTTP status code "0" is not valid.
如何获得 json 响应(没有调试栏的东西)?
更新:(我测试了 Tim Levis 评论中的命题)
当我尝试时(使用和不使用 use Response
)
return response()->json(['result' => 4], 200);
我明白了
Call to undefined function App\Controllers\Api\response()
Update2:有人建议 Laravel 5 已经有了答案 - 实际上在 L4 中有效 - 但我认为这是偶然的 - 通常 L5 解决方案不适用于 L4 所以我们不应该混合这两个框架版本
无意中发现当我return数组
return ['result' => 4 ];
然后响应有 Content-Type: application/json
而没有调试栏的东西 - 我不知道为什么 - 但它有效 :)
Response::json()
应该在 Laravel 4.2 中工作,因为 5 之前的版本使用 Facades (Response::
) 而不是全局方法 (response()
)。
这里的主要问题是导入的 Response
class 不是 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);
}
}
旁注; return ['result' => 4];
“有效”,因为 Laravel 猜测控制器中 return 语句的内容类型,但最好具体一些以避免任何问题。
更新:您可以使用无需 use Response
语句
的快捷方式
return \Response::json(4);`
我在旧系统上工作 - laravel 4.1/4.2 - 我的控制器 returns 响应编号:
return 4;
但浏览器显示 Content-Type: text/html
(不是 json)并且调试栏也会向该响应添加一些 html。
当我从 laravel doc:
尝试这个return Response::json(['result' => 4 ]);
我收到错误消息(我有 use Symfony\Component\HttpFoundation\Response;
的 php 控制器文件)
Call to undefined method Symfony\Component\HttpFoundation\Response::json()
我也尝试用
$response = new Response(200, array(), ['result' => 4]);
return $response->json();
但我明白了
The HTTP status code "0" is not valid.
如何获得 json 响应(没有调试栏的东西)?
更新:(我测试了 Tim Levis 评论中的命题)
当我尝试时(使用和不使用 use Response
)
return response()->json(['result' => 4], 200);
我明白了
Call to undefined function App\Controllers\Api\response()
Update2:有人建议 Laravel 5 已经有了答案 - 实际上在 L4 中有效 - 但我认为这是偶然的 - 通常 L5 解决方案不适用于 L4 所以我们不应该混合这两个框架版本
无意中发现当我return数组
return ['result' => 4 ];
然后响应有 Content-Type: application/json
而没有调试栏的东西 - 我不知道为什么 - 但它有效 :)
Response::json()
应该在 Laravel 4.2 中工作,因为 5 之前的版本使用 Facades (Response::
) 而不是全局方法 (response()
)。
这里的主要问题是导入的 Response
class 不是 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);
}
}
旁注; return ['result' => 4];
“有效”,因为 Laravel 猜测控制器中 return 语句的内容类型,但最好具体一些以避免任何问题。
更新:您可以使用无需 use Response
语句
return \Response::json(4);`