cari

Rumah  >  Soal Jawab  >  teks badan

php - laravel5.4 mendapat pulangan 422 apabila menyerahkan borang melalui ajax, dan ajax tidak dapat menangkap kandungan pulangan

1. Hantar borang melalui ajax Jika pengesahan gagal, json dengan nilai status http 422 akan dikembalikan 2. Bagaimana untuk menyesuaikan format json?
3 Nilai status http ialah 422, yang nampaknya telah dikodkan dengan keras dalam rangka kerja. Saya ingin mengembalikan json tersuai ke bahagian hadapan dengan menangkap pengecualian pengesahan Adakah ini mungkin?
4 Apabila menggunakan kaedah ajax jquery, anda masih tidak boleh mendapatkan data pemulangan sebagai objek json apabila ralat berlaku Anda hanya boleh mendapatkan json dalam bentuk rentetan

PHP中文网PHP中文网2751 hari yang lalu707

membalas semua(1)saya akan balas

  • 伊谢尔伦

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

    Anda boleh menentukan sendiri format json mengikut keperluan anda. Tiada apa lagi yang boleh dikatakan tentang dua soalan seterusnya

    • Nilai status http ialah 422, yang nampaknya dikodkan keras dalam rangka kerja. Saya mahu mengembalikan json tersuai ke bahagian hadapan dengan menangkap pengecualian pengesahan Adakah ini mungkin?

      <?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
                  ]);
              }
              ...
          }
      }

    • Menggunakan kaedah ajax jquery, apabila ralat berlaku, anda masih tidak dapat memformatkan data pulangan sebagai objek json Anda hanya boleh mendapatkan json dalam bentuk rentetan

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

    • balas
      0
  • Batalbalas