cakephp2.0でjsonを変換しており、
jQueryのajaxでjsonに変換したデータを非同期通信にて、
画面遷移なしでformから送信したデータを
ホームに反映したいのですが、
既にjsonに変換してあるものはホーム反映されますが、
formの内容がjsonに変換されず、ホームに反映されません。
json
1{ 2user_id: "14", 3my_id: "353", 4json_data: [ 5{ 6Tweet: { 7id: "24579", 8tweet_id: "14", 9name: "353", 10tweet: "Hello", 11tweettime: "2016-10-23 14:25:47" 12} 13}, 14{ 15Tweet: { 16id: "24563", 17tweet_id: "14", 18name: "353", 19tweet: "Hi", 20tweettime: "2016-10-21 03:40:17" 21}.... 22] 23}
php
1 <?php 2 echo $this->Form->create('Tweet'); 3 echo nl2br($this->Form->textarea('tweet', array('cols'=>100, 'rows'=>4,'required' => false,'error'=>false))); 4 echo $this->Form->hidden('tweet_id',array('value'=> $user['id'])); 5 echo $this->Form->hidden('name',array('value'=> $user['username'])); 6 echo $this->Form->submit('投稿',array(/*'onclick'=>'index',*/'name' => 'submit')); 7 echo $this->Form->end(); 8endif; 9 <h3>ホーム</h3> 10 <div id="output"> 11 <div id="delite"></div> 12 </div> 13?> 14
javascript
1var user_id; 2 var my_id; 3 4$(document).ready(function(){ 5 tweet_load(); 6 7 $(document).on('click','button',function(){ 8 alert('deliteをクリックしました!'); 9 }); 10 $(document).on('click','div.submit',function(event) { 11event.preventDefault(); 12var time =new Date(); 13var params = $('#form').serialize(); 14 $.ajax({ 15 type:'post', 16 url: '/cakephp/users/json_data', 17 dataType: 'json', 18 data : [{"Tweet":[{'tweet_id': user_id ,'username': my_id, 'tweet' : $('textarea').val()}]}], 19 timeout:10000, 20 success: function(data) { 21 console.log(user_id+' '+my_id+' '+$('textarea').val()+' '+time); 22 //console.log(parms); 23 tweet_load(); 24 }, 25 error: function(XMLHttpRequest, textStatus, errorThrown) { 26 alert("error"); 27 } 28 }); 29});}); 30/* 31$(function(){ 32 //1秒ごとに読み込み 33 setInterval(update, 1000); 34});*/ 35/* 36function ajaxPostFunc(param1, param2){ 37 $.post("post.php", {input1:param1, input2:param2}, 38 function(json){alert("パラメータを2つPOSTしました");}); 39}*/ 40 41function tweet_load(){ 42$.ajax({ 43 type: "POST", 44 url: '/cakephp/users/json_data', 45 dataType: 'json', 46 timeout: 10000}) 47 .done(function(data){ 48 for(var i in data.json_data){ 49 $("#output").append('<a href='+data.json_data[i].Tweet.name+'>'+data.json_data[i].Tweet.name+"</br>"); 50 $("#output").append(data.json_data[i].Tweet.tweet+"</br>"); 51 $("#output").append(data.json_data[i].Tweet.tweettime+"</br>"); 52 if(data.my_id==data.json_data[i].Tweet.name){ 53 $("#output").append('<button type="button" name="delite" id="delite" value='+data.json_data[i].Tweet.tweet_id+'>削除</button></br>'); 54 } 55 $("#output").append("</br>"); 56 user_id = data.user_id; 57 my_id = data.my_id;} 58}) 59 .fail(function(){ 60 //通信失敗時の処理 61 alert('通信失敗'); 62 });}
php
1public function json_data(){ 2 // $this->autoRender = FALSE; 3 $this->loadModel('Tweet'); 4 $this->loadModel('Follow'); 5if($this->request->is('ajax')){ 6 if(isset($this->data['tweet_id'])){ 7 $this->Tweet->save($this->request->data); 8 //$this->redirect(array('action'=>'json_data')); 9} 10 $id=$this->Auth->user('username'); 11 $user_id=$this->Auth->user('id'); 12 //フォロワーをfind指定 13 $all_follow=$this->Follow->list_all_follow($id); 14 $json_data=$this->Tweet->json_alluser_tweet_all($all_follow,$id); 15 //debug($json_data); 16 $this->viewClass = 'Json'; 17 $this->set('my_id',$id); 18 $this->set('user_id',$user_id); 19 $this->set(compact('json_data')); 20 $this->set('_serialize',['user_id','my_id','json_data']); 21} 22/* } 23else { 24 throw new BadRequestException(); 25}*/ 26}
回答2件
あなたの回答
tips
プレビュー