質問編集履歴
1
コードの修正
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,
|
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
|
-
|
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
|
```
|