Как генерировать ответ, как показано ниже в Laravel 5.8 - PullRequest
0 голосов
/ 06 апреля 2019

Это ответ, который я получаю, если мой ajax-запрос заканчивается ошибками проверки ...

{"readyState":4,"responseText":"{\"email\":[\"The email field is required.\"]}","responseJSON":{"email":["The email field is required."]},"status":422,"statusText":"Unprocessable Entity"}

Хотите создать ответ в аналогичном формате, если запрос успешно обработан.Был бы признателен за подробное описание.

Прошел через различные ответы уже размещены здесь, но ни один из них не выручить меня.Спасибо:)

1 Ответ

2 голосов
/ 06 апреля 2019

Поскольку это всего лишь 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\":[\"The email field is required.\"]}","responseJSON":{"email":["The email field is required."]},"status":422,"statusText":"Unprocessable Entity"}

EDIT: Для установки кода состояния вы можете использовать response()->json() примерно так:

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

response() возвращает экземпляр Illuminate\Routing\ResponseFactory, чтобы вы могли искать возможные параметры: function json($data = [], $status = 200, array $headers = [], $options = 0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...