php - laravel5.4 obtient un retour 422 lors de la soumission du formulaire via ajax, et ajax ne peut pas capturer le contenu du retour
PHP中文网
PHP中文网 2017-06-21 10:10:48
0
1
705

1. Soumettez le formulaire via ajax. Si la vérification échoue, un json avec une valeur de statut http de 422 sera renvoyé. 2. Comment personnaliser le format du json ?
3. La valeur du statut http est 422, ce qui semble avoir été codé en dur dans le framework. Je souhaite renvoyer le json personnalisé au front-end en interceptant les exceptions de validation. Est-ce possible ?
4. Lorsque vous utilisez la méthode ajax de jquery, vous ne pouvez toujours pas obtenir les données de retour formatées en tant qu'objet json lorsqu'une erreur se produit. Vous ne pouvez obtenir un json que sous la forme d'une chaîne
.

PHP中文网
PHP中文网

认证0级讲师

répondre à tous(1)
伊谢尔伦

Vous pouvez définir vous-même le format json en fonction de vos besoins Il n'y a plus rien à dire sur les deux questions suivantes

.
  • La valeur du statut http est 422, ce qui semble être codé en dur dans le framework. Je souhaite renvoyer le json personnalisé au front-end en interceptant les exceptions de validation. Est-ce possible ?

    <?php
    namespace App\Exceptions;
    
    use Illuminate\Validation\ValidationException;
    ...
       
    class Handler extends ExceptionHandler
    {
        ...
        
        public function render($request, Exception $e)
        {
            if ($request->ajax() || $request->wantsJson()) {
                $errors = [];
                if ($e instanceof ValidationException && $e->getResponse()) {
                    try {
                        $errors = json_decode($e->getResponse()->getContent(), true);
                    } catch (\Exception $ex) {
                        $errors = $e->getResponse()->getContent();
                    }
                }
    
                return response()->json([
                    'message'     => empty($errors) ?
                        (empty($e->getMessage()) ? '出错了' : $e->getMessage())
                        : implode(',', array_first($errors)),
                    'status_code' => $e->getStatusCode(),
                    'errors'      => $errors
                ]);
            }
            ...
        }
    }
  • En utilisant la méthode ajax de jquery, lorsqu'une erreur se produit, vous ne pouvez toujours pas obtenir les données de retour formatées en tant qu'objet json. Vous ne pouvez obtenir un json que sous la forme d'une chaîne

    .
    $.ajax({
        ...
        dataType: "json",
        ...
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal