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

回答編集履歴

3

コード例追記

2016/03/19 05:03

投稿

unau
unau

スコア2468

answer CHANGED
@@ -14,4 +14,23 @@
14
14
  "hasNext": true/false
15
15
  }
16
16
  ```
17
- 最近の PHP や CakePHP はさっぱりわかりませんが、`SampleAction` の中で `$this->render("sample")` しているところで `ob_start` などで出力をバッファリングして、それをレスポンスの JSON に突っ込めばいいと思います。
17
+ 最近の PHP や CakePHP はさっぱりわかりませんが、`SampleAction` の中で `$this->render("sample")` しているところで `ob_start` などで出力をバッファリングして、それをレスポンスの JSON に突っ込めばいいと思います。
18
+
19
+ ---
20
+ 実装例
21
+
22
+ 最近の PHP, CakePHP の作法は知りませんので、適当にアレンジしていただくとして、私の案の実装例です。未検証なので動くかどうかはわかりませんが。
23
+
24
+ 現在、
25
+ ```PHP
26
+ $this->render("sample");
27
+ ```
28
+ でテンプレートに当てはめて書き出している処理を、
29
+ ```php
30
+ ob_start();
31
+ $this->render("sample");
32
+ $response = array( 'html' => ob_get_contents(), 'hasNext' => $hasNext );
33
+ ob_end_clean();
34
+ echo json_encode($response);
35
+ ```
36
+ とするような感じです。

2

追記

2016/03/19 05:03

投稿

unau
unau

スコア2468

answer CHANGED
@@ -14,3 +14,4 @@
14
14
  "hasNext": true/false
15
15
  }
16
16
  ```
17
+ 最近の PHP や CakePHP はさっぱりわかりませんが、`SampleAction` の中で `$this->render("sample")` しているところで `ob_start` などで出力をバッファリングして、それをレスポンスの JSON に突っ込めばいいと思います。

1

追記

2016/03/19 00:19

投稿

unau
unau

スコア2468

answer CHANGED
@@ -1,2 +1,16 @@
1
1
  `$.ajax()` が成功したときのハンドラ (`.done(function() { ~ } )` でいいのかな)の中で `.append()` で追加していますが、そのときにもっと見るボタンを `.hide()` すればいいのではないでしょうか。
2
- あと、ajax では json とか返して `.done()` の中ではそれを表示用に加工しながら追加するほうがいいと思うのですが、CakePHP 界隈では普通どうやるんでしょう。
2
+ あと、ajax では json とか返して `.done()` の中ではそれを表示用に加工しながら追加するほうがいいと思うのですが、CakePHP 界隈では普通どうやるんでしょう。
3
+
4
+ ---
5
+ 追記
6
+
7
+ 『「もっと見る」ボタンを押して次に表示すべきリストを ajax でもらってくるけれど、まだ次があって「もっと見る」ボタンを消しちゃいけないときと、その次はないので「もっと見る」ボタンを消すべききがある』
8
+ ということなのかな、と思い、その線で考えたことを追記します。
9
+
10
+ ajax で返すデータはやはり JSON にするといいのではないでしょうか。リストに追加すべき HTML とまだ次があるかどうかを示すフラグが格納されているような。
11
+ ```json
12
+ {
13
+ "html": "~追加すべき HTML データ~",
14
+ "hasNext": true/false
15
+ }
16
+ ```