2016-05-23 124 views
0

請有人從Laravel docs解釋此信息「在AJAX請求期間使用validate方法時,Laravel不會生成重定向響應,而是生成包含所有驗證錯誤的JSON響應。 JSON響應將以422 HTTP狀態碼發送。「ajax請求中的laravel驗證

「在AJAX請求期間」究竟意味着什麼?

如果我這樣設置:

  1. 用戶從視圖中的表單提交輸入。
  2. 的呼叫路由在控制器
  3. 該請求在控制器

情況1)請求通過驗證和輸入被驗證存儲在DB中柱的方法 - >響應被返回作爲JSON用於即時更新視圖的腳本。

情況2)請求沒有通過驗證,這裏返回什麼?我認爲重定向,如果不是,你如何檢查驗證是否無法返回JSON?

這種情況與文檔中提到的相似嗎?如果不是那麼什麼?

回答

0

在這種情況下對AJAX調用的響應是JSON字符串 情況1:如您所說 情況2:帶有錯誤消息的JSON字符串。查看你的Chrome開發工具到網絡標籤,你會看到確切的迴應。

+0

我知道這一點,我想了解的是驗證器如何參與發送JSON響應。我的意思是,如果我在驗證後製作我的JSON,我發送的是設置的,我製作的JSON,而不是驗證器的實例。那麼我應該發送$ validator嗎? – Chriz74

+0

如果Laravel驗證規則觸發了丟失或錯誤數據的原因,驗證程序會自行觸發響應。你的代碼都不會被執行。 – Pascal

+0

好吧,但如果你使用驗證而不是驗證器呢?你如何觸發迴應? – Chriz74

0

當處理驗證失敗時,laravel自動生成錯誤響應。通常情況下,這會將用戶重定向回其表單,但在AJAX請求的情況下,它將返回一個JSON響應,其中包含驗證失敗的詳細信息。

Laravel依靠symfony的請求對象,以檢測AJAX請求,具體this linereturn 'XMLHttpRequest' == $this->headers->get('X-Requested-With');

如果你與你的請求不被視爲AJAX遇到問題,請確保您的客戶端適當設置X-Requested-With