teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

訂正

2017/06/07 23:16

投稿

norisukeoji
norisukeoji

スコア14

title CHANGED
File without changes
body CHANGED
@@ -3,15 +3,7 @@
3
3
  Laravel5.2.+Ajaxで登録フォームを作っています。
4
4
  バリデーション自体はサーバーサイドで行いたいためPHP上で行うよう、AjaxでPHPにリクエストを送り、Laravelのコントローラーを通してRequestバリデーションを行っています。そちらでエラーメッセージなども設定しています。
5
5
  処理自体はうまくいくのですが、バリデーションエラー時のエラーメッセージの取り出し方がわかりません。
6
- エラー別にメッセージを取り出したいため、
7
-
8
- ```jQuery
9
- error: function(XMLHttpRequest, textStatus, errorThrown){
10
- alert(XMLHttpRequest.responseText)
11
- }
12
- ```
13
-
14
- う形で直接Requestで設定したメッセージを表示しようとしたのですが、返ってくるメッセージはひどく文字化けしています。
6
+ エラー別にメッセージを取り出したため、直接Requestで設定したメッセージを表示しようとしたのですが、返ってくるメッセージはひどく文字化けしています。
15
7
  Chromeのデベロッパーツールなどで確認したところ、Requestコントローラーで設定したメッセージはPreviewタブでは正常に表示され、Responseタブでは文字化けした状態でした。
16
8
  正常にエラーメッセージを表示するにはどうすればよいでしょうか。
17
9
 

2

コード

2017/06/07 23:16

投稿

norisukeoji
norisukeoji

スコア14

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  プログラミング初心者です。
2
2
 
3
- Laravel+Ajaxで登録フォームを作っています。
3
+ Laravel5.2.+Ajaxで登録フォームを作っています。
4
4
  バリデーション自体はサーバーサイドで行いたいためPHP上で行うよう、AjaxでPHPにリクエストを送り、Laravelのコントローラーを通してRequestバリデーションを行っています。そちらでエラーメッセージなども設定しています。
5
5
  処理自体はうまくいくのですが、バリデーションエラー時のエラーメッセージの取り出し方がわかりません。
6
6
  エラー別にメッセージを取り出したいため、
@@ -13,4 +13,60 @@
13
13
 
14
14
  という形で直接Requestで設定したメッセージを表示しようとしたのですが、返ってくるメッセージはひどく文字化けしています。
15
15
  Chromeのデベロッパーツールなどで確認したところ、Requestコントローラーで設定したメッセージはPreviewタブでは正常に表示され、Responseタブでは文字化けした状態でした。
16
- 正常にエラーメッセージを表示するにはどうすればよいでしょうか。
16
+ 正常にエラーメッセージを表示するにはどうすればよいでしょうか。
17
+
18
+ ---
19
+
20
+ これをControllerから呼び出してバリデーションしています。
21
+ ```php
22
+ Request.php
23
+ ~~~~~
24
+ public function rules()
25
+ {
26
+ return [
27
+ 'hoge' => 'sometimes|required',
28
+ 'hoge2' => 'sometimes|required',
29
+ ];
30
+ }
31
+
32
+ public function messages()
33
+ {
34
+ return [
35
+ 'hoge.required' => '必須です。',
36
+ 'hoge2.required' => '必須です。',
37
+ ];
38
+ }
39
+ ```
40
+
41
+
42
+
43
+ ```javascript
44
+ $(document).ready(function()
45
+ {
46
+ $.ajaxSetup({
47
+ headers: {
48
+ 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
49
+ }
50
+ });
51
+
52
+ $.ajax({
53
+ type: "POST",
54
+ url: "complete",
55
+ dataType: 'script',
56
+ scriptCharset: 'utf-8',
57
+ data: data,
58
+
59
+ success: function(data, dataType)
60
+ {
61
+ alert("登録が完了しました");
62
+ },
63
+
64
+ error: function(XMLHttpRequest, textStatus, errorThrown)
65
+ {
66
+ alert('エラー' + XMLHttpRequest.responseText)
67
+ }
68
+ });
69
+ return false;
70
+ });
71
+ });
72
+ ```

1

初心者タグ付け

2017/06/07 23:14

投稿

norisukeoji
norisukeoji

スコア14

title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,5 @@
1
+ プログラミング初心者です。
2
+
1
3
  Laravel+Ajaxで登録フォームを作っています。
2
4
  バリデーション自体はサーバーサイドで行いたいためPHP上で行うよう、AjaxでPHPにリクエストを送り、Laravelのコントローラーを通してRequestバリデーションを行っています。そちらでエラーメッセージなども設定しています。
3
5
  処理自体はうまくいくのですが、バリデーションエラー時のエラーメッセージの取り出し方がわかりません。