suchen

Heim  >  Fragen und Antworten  >  Hauptteil

php - laravel5.4 erhält eine 422-Rückgabe, wenn das Formular über Ajax gesendet wird, und Ajax kann den zurückgegebenen Inhalt nicht erfassen

1. Senden Sie das Formular über Ajax. Wenn die Überprüfung fehlschlägt, wird ein JSON mit dem HTTP-Statuswert 422 zurückgegeben.
3. Der HTTP-Statuswert ist 422, was im Framework fest codiert zu sein scheint. Ich möchte benutzerdefiniertes JSON durch das Abfangen von Validierungsausnahmen an das Frontend zurückgeben. Ist das möglich?
4. Wenn Sie die Ajax-Methode von jquery verwenden, können Sie die Rückgabedaten immer noch nicht als JSON-Objekt formatieren, wenn ein Fehler auftritt. Sie können einen JSON nur in Form einer Zeichenfolge erhalten

PHP中文网PHP中文网2753 Tage vor711

Antworte allen(1)Ich werde antworten

  • 伊谢尔伦

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

    json格式这个自己根据需要定义,没有什么多说的,后面两个问题

    • http状态值422,貌似已经在框架里面写死了。我想通过捕获验证异常的形式返回自定义的json到前端,这个能实现吗?

      <?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
                  ]);
              }
              ...
          }
      }
    • 利用jquery的ajax方法在error的时候还是拿不到格式化成json对象的的返回数据,只能拿到一个字符串形式的json

      $.ajax({
          ...
          dataType: "json",
          ...

    Antwort
    0
  • StornierenAntwort