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

質問編集履歴

2

Javascriiptを修正しました

2017/08/17 13:29

投稿

yokatone
yokatone

スコア43

title CHANGED
File without changes
body CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  ```javascript
18
18
 
19
- function getAjax = function(controller, action, param){
19
+ function getAjax(controller, action, param){
20
20
  var url = "../testController/getOtherHtml";
21
21
  var data = {controller: controller, action: action, param: param};
22
22
 
@@ -81,5 +81,20 @@
81
81
  </html>
82
82
  ```
83
83
 
84
+ ```json
85
+ <script>
86
+ var result = getAjax("targetController", "targetView", 1);
87
+ console.log(result);
88
+ </script>
89
+
90
+ responseJSON : {
91
+ <html>
92
+ <body>
93
+ <!-- targetTableの中身 -->
94
+ </body>
95
+ </html>
96
+ }
97
+ ```
98
+
84
99
  ###補足情報(言語/FW/ツール等のバージョンなど)
85
100
  CakePHP 3.4.12

1

Javascriptのソースを追記しました

2017/08/17 13:29

投稿

yokatone
yokatone

スコア43

title CHANGED
File without changes
body CHANGED
@@ -3,12 +3,7 @@
3
3
  CakePHPで各Controllerのaction結果のHTMLを取得して
4
4
  JSONで返す関数を作りたいと考えています。
5
5
 
6
- JSのajaxで`http://localhost/Controller/view/param`で取得することも考えたのですが、
7
- CakePHPの組み込みテストサーバーだと、クライアントから多重にリクエストしても受け付けずハングしてしまうようなので
8
- 実際にブラウザに表示された結果から取得するというのは
9
- いずれにせよバグの温床になりかねない気がして辞めました。
10
-
11
- そこで、独立したControllerを作成して、
6
+ 独立したControllerを作成して、
12
7
  コントローラー名、アクション名、渡したいデータを指定すると
13
8
  そこで表示されるHTMLを返すような関数を作ろうとしています。
14
9
 
@@ -18,6 +13,29 @@
18
13
  方法をご存知の方がおられたら是非教えてください。
19
14
 
20
15
  ###実現したいソースコード
16
+
17
+ ```javascript
18
+
19
+ function getAjax = function(controller, action, param){
20
+ var url = "../testController/getOtherHtml";
21
+ var data = {controller: controller, action: action, param: param};
22
+
23
+ var result = $.ajax({
24
+ url : url,
25
+ type: "post",
26
+ dataType: "json",
27
+ data: data,
28
+ async: false
29
+ }).done(function (response) {
30
+ return response;
31
+ }).fail(function () {
32
+ return false;
33
+ });
34
+
35
+ return result['responseJSON'];
36
+ }
37
+ ```
38
+
21
39
  ```php
22
40
 
23
41
  class TestController extends AppController