php - laravel5.4 mendapat pulangan 422 apabila menyerahkan borang melalui ajax, dan ajax tidak dapat menangkap kandungan pulangan
PHP中文网
PHP中文网 2017-06-21 10:10:48
0
1
671

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中文网

认证0级讲师

membalas semua(1)
伊谢尔伦

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",
        ...
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan