recherche

Maison  >  Questions et réponses  >  le corps du texte

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

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中文网2753 Il y a quelques jours710

répondre à tous(1)je répondrai

  • 伊谢尔伦

    伊谢尔伦2017-06-21 10:12:48

    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",
          ...

    répondre
    0
  • Annulerrépondre