質問編集履歴

1

コードの修正

2020/06/18 00:14

投稿

Sonono
Sonono

スコア85

test CHANGED
@@ -1 +1 @@
1
- jsのajaxでpostしたときの返り値を変更したい
1
+ jsのajaxでpostしたときの返り値は何がくる?
test CHANGED
@@ -1,10 +1,12 @@
1
- 以下のようにjsでcakephpのアクションにpostを投げ返り値で場合分けをと思っています。
1
+ 以下のようにjsでcakephpのアクションにpostを投げています。返り値はcakeのアクションレンダーるctpのページのhtmlが帰ってきています。しっくりこないのですが、返り値は「cakeのアクションでレンダーしているctpのページのhtml」ということでいいのでしょうか?
2
2
 
3
- cakephpのほうでバリデーションに失敗した場合は返り値をnullにするように書きたいのですが、うまくいきません。
4
3
 
5
- そもそも、返り値はcakephpのアクションでrenderしている先のhtmlが現在帰ってきているのですが、何故なのかよくわかりません。(返り値はreturnで返すものかと思っていました)
6
4
 
5
+ また、返り値を変更することはできるのでしょうか。cakeのアクションでreturn falseとしたときに返り値はレスポンスかnullだけだよというエラーが出たので、nullに変更してみようとしたのですが、return null としてもnullが帰ってくるわけではなく変わらずhtmlが帰ってきました。返り値を変更できるとしたらどうすれば良いのでしょうか。
6
+
7
+
8
+
7
- 教えていただけるといです
9
+ jsは昨日はじめ触ったので完全に初心者なのですが、ご助言いただけるとありがたいです
8
10
 
9
11
 
10
12
 
@@ -20,7 +22,7 @@
20
22
 
21
23
  $.ajax({
22
24
 
23
- url: action,   #cakePHPのコントローラーのアクションに投げる
25
+ url: action,   //cakePHPのコントローラーのアクションに投げる
24
26
 
25
27
  type: 'POST',
26
28
 
@@ -40,17 +42,9 @@
40
42
 
41
43
  timeout: 3000,
42
44
 
43
- }).done(function(data) {
45
+ }).done(function(data) { //返り値dataにはhtmlが入っている
44
46
 
45
- if (data == null){
46
-
47
- $text = String.raw`<div class="block-mb-sm alert alert-danger" role="alert"><p class="text-danger"><?php echo 'メールアドレスの形式が正しくありません' ?></p></div>`
48
-
49
- $('.jsform').html(text + data);
50
-
51
- }else{
52
-
53
- $('.jsform').load('/share-records/email-success')
47
+ $('.jsform').load('/records/success')
54
48
 
55
49
  }
56
50
 
@@ -72,6 +66,16 @@
72
66
 
73
67
  ```cakePHP
74
68
 
69
+ public function shareByEmail($id)
75
70
 
71
+ {
72
+
73
+ (略)
74
+
75
+      return null; #効かない
76
+
77
+ $this->render('/Element/share_records/email_form', 'ajax');  #ここでrenderしている先のhtmlが返り値としてjsに渡ってきている
78
+
79
+ }
76
80
 
77
81
  ```