###前提・実現したいこと
動画再生後、モーダルを出現させ、モーダル内にチェックボックスを表示させチェックを入れて送信ボタンをクリックすると親画面に戻り次の動画の表示とajaxで送られてきた値をサーバ保存し、そこで加算された最新のポイントを表示させたい。
###発生している問題・エラーメッセージ
ajaxを使い次の動画の取得、サーバへの保存まで出来るようになったのですが、ajaxにてサブミット後、ページをリロードしないようにreturn false;しているので、次の動画は表示され、サーバに値を保存するまではできているのですが、そのサーバに保存された最新の値は、手動でブラウザのリロードを行わないと最新のポイントが反映されません。
ajaxのreturn false;を外せば、値の保存と、ポイントは最新の値を表示してくれますが、動画の表示が元の動画に戻ってしまいます。
###該当のソースコード
javascript
1$(".a").on("click",function(){ 2 var check_count = $("[name='check[]']:checked").length; 3 if (check_count == 0 ){ 4 return false; 5 }else{ 6 var checked=[]; 7 $("[name='check[]']:checked").each(function(){ 8 checked.push(this.value); 9 }); 10 11 $.ajax({ 12 type: "POST", 13 url: "", 14 dataType: "text", 15 data: { 16 "a": a, 17 "b": b, 18 "point":point, 19 "checked" : checked, 20 }, 21 success: function() { 22 $('#a').modal('hide'); 23 if(index < videos.length-1){ 24 index++; 25 getElements(); 26 } 27 }, 28 error: function(XMLHttpRequest, textStatus, errorThrown) { 29 alert('Error : ' + errorThrown); 30 } 31 }); 32 return false;//サブミット後、ページをリロードしないようにする 33 } 34});
controller.php
1 public function beforeFilter() { 2 3 $id = $this->Auth->user('id'); 4 $data = $this->Point->find('all', 5 array( 6 'conditions'=> array('Point.id' => $id), 7 'fields' => array('sum(point) as point'), 8 ) 9 ); 10 $point = $data['0']['0']['point']; 11 $this->set('point',$point); 12 13 } 14 15 public function index() { 16 $this->set('videos', $this->Video->find('all')); 17 $checked = array(); 18 if ($this->request->is('ajax')){ 19 $this->autoRender = false; 20 $p_checked = $this->request->data['checked']; 21 $p_checked = json_encode($p_checked); 22 $data = array( 23 'Point' => array( 24 'a' => a, 25 'b' => b, 26 'point' => $this->request->data['point'], 27 'checked'=> $checked 28 ) 29 ); 30 $this->Point->create(); 31 $this->Point->save($data); 32 exit; 33 } 34 }
###試したこと
ajaxのreturn false;をtrueにする。(動画が反映されない)。
Sessionにポイントの値を変数にして入れてみる。
書き方が悪いのか取得できない。
###補足情報(言語/FW/ツール等のバージョンなど)
XAMPP 5.6.14-0
cakephp-2.7.8
jquery 1.11.0
10.0.17-MariaDB
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/30 01:54
退会済みユーザー
2016/05/30 03:31
退会済みユーザー
2016/05/30 03:34
2016/05/30 04:14
退会済みユーザー
2016/05/30 07:05
2016/05/30 12:44 編集
2016/05/30 12:43 編集