php - laravel5.4透過ajax提交表單取得到422返回,ajax無法捕獲返回內容
PHP中文网
PHP中文网 2017-06-21 10:10:48
0
1
694

1.透過ajax提交表單,如果驗證不通過,則會傳回http狀態值為422的json
2.該json的格式如何自訂?
3.http狀態值422,似乎已經在框架裡面寫死了。我想透過捕獲驗證異常的形式返回自訂的json到前端,這個能實現嗎?
4.利用jquery的ajax方法在error的時候還是拿不到格式化成json物件的的回傳數據,只能拿到一個字串形式的json

PHP中文网
PHP中文网

认证0级讲师

全部回覆(1)
伊谢尔伦

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",
        ...
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板