Laravel 5 Validation - 以 json / ajax 形式返回

2022-08-30 14:11:22

我正在尝试将值发布到验证中,并将响应作为json而不是文档中给出的响应返回。return view

    $validator = Validator::make($request->all(), [
        'about' => 'min:1'
    ]);

    if ($validator->fails()) {
        return response()->json(['errors' => ?, 'status' => 400], 200);
    } 

该帖子是由ajax制作的,因此我也需要在ajax中收到响应。

我发现,为了防止刷新返回响应中的页面,我必须在数组外部为其提供状态代码200。但是我不知道该给这个部分什么。我应该在那里写些什么?'errors'


答案 1

您可以使用 返回一个数组,其中包含有关验证程序的所有信息,包括错误。该函数采用数组并将其编码为 json 字符串。$validator->messages()json

if ($validator->fails()) {    
    return response()->json($validator->messages(), Response::HTTP_BAD_REQUEST);
}

注意:如果出现验证错误,最好不要返回响应代码 200。您可以使用其他状态代码,如 400 或Response::HTTP_BAD_REQUEST


答案 2

你也可以告诉Laravel你想要一个JSON响应。将此标头添加到您的请求中:

'Accept: application/json'

Laravel将返回一个JSON响应。