Ajax 如何在Laravel 5.8中生成如下响应

Ajax 如何在Laravel 5.8中生成如下响应,ajax,validation,laravel-5,Ajax,Validation,Laravel 5,如果我的ajax请求最终出现验证错误,我会得到这样的响应 {"readyState":4,"responseText":"{\"email\":[\"The email field is required.\"]}","responseJSON":{"email":["The email field is required."]},"status":422,"statusText":"Unprocessable Entity"} 如果请求处理成功,则希望生成类似格式的响应。 请详细说明 浏览了

如果我的ajax请求最终出现验证错误,我会得到这样的响应

{"readyState":4,"responseText":"{\"email\":[\"The email field is required.\"]}","responseJSON":{"email":["The email field is required."]},"status":422,"statusText":"Unprocessable Entity"}
如果请求处理成功,则希望生成类似格式的响应。 请详细说明

浏览了已经贴在这里的各种答案,但没有一个能帮到我。
谢谢:)

因为这只是一个JSON,laravel支持JSON响应,所以您只需返回一个包含数据的数组:

Route::get("/test", function() {
    $response = ["email" => ["The email field is required."]];
    return [
        "readyState" => 4,
        "responseText" => json_encode($response),
        "responseJSON" => $response,
        "status" => 422,
        "statusText" => "Unprocessable Entity"
    ];
});
Laravel将每个数组作为JSON返回,并将
Content-Type:application/JSON
头添加到HTTP请求中

上面的示例给出了您的字符串:
{“readyState”:4,“responseText”:“{\“email\”:[\“email”字段是必需的。\“]}”,“responseJSON”:{“email”:[“email”字段是必需的。]},“status”:422,“statusText”:“Unprocessable Entity”}

编辑: 要设置状态代码,可以使用
response()->json()
如下所示:

Route::get("/test", function() {
    $response = ["email" => ["The email field is required."]];
    return response()->json($response, 422);
});

response()
返回
illumb\Routing\ResponseFactory
的实例,以便您可以查找可能的参数:
函数json($data=[],$status=200,数组$headers=[],$options=0)

因为这只是一个JSON,laravel支持JSON响应,所以您只需返回一个包含数据的数组:

Route::get("/test", function() {
    $response = ["email" => ["The email field is required."]];
    return [
        "readyState" => 4,
        "responseText" => json_encode($response),
        "responseJSON" => $response,
        "status" => 422,
        "statusText" => "Unprocessable Entity"
    ];
});
Laravel将每个数组作为JSON返回,并将
Content-Type:application/JSON
头添加到HTTP请求中

上面的示例给出了您的字符串:
{“readyState”:4,“responseText”:“{\“email\”:[\“email”字段是必需的。\“]}”,“responseJSON”:{“email”:[“email”字段是必需的。]},“status”:422,“statusText”:“Unprocessable Entity”}

编辑: 要设置状态代码,可以使用
response()->json()
如下所示:

Route::get("/test", function() {
    $response = ["email" => ["The email field is required."]];
    return response()->json($response, 422);
});

response()
返回
illumb\Routing\ResponseFactory
的实例,以便您可以查找可能的参数:
函数json($data=[],$status=200,array$headers=[],$options=0)

这将返回所有内容,包括作为响应一部分的状态,但Laravel的默认验证错误响应返回状态作为标题的一部分。表示当我在网络日志中查看时,只有
“email”=>[“email字段是必需的。”]
可见。但是在你的例子中,所有的响应都是可见的。你说你希望你的响应类似,所以我做了类似的。但是可以随意修改数组以返回一些其他数据。我编辑了我的答案,向您展示了如何更改状态代码。这将返回包括状态在内的所有内容作为响应的一部分,但Laravel的默认验证错误响应将状态作为标题的一部分返回。表示当我在网络日志中查看时,只有
“email”=>[“email字段是必需的。”]
可见。但是在你的例子中,所有的响应都是可见的。你说你希望你的响应类似,所以我做了类似的。但是可以随意修改数组以返回一些其他数据。我编辑了我的答案,向您展示了如何更改状态代码。