質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

2529閲覧

jqueryでjquery.bottom-1.0,validateが実行されない。

usuallyi

総合スコア41

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2016/10/25 17:30

編集2016/10/26 10:34

以下のjavascriptにて、tweetloadを実行させたのですが、
通信1までlogは行くのですが、
$(window).bind('bottom',function(){
文以降が実行されず、
tweetload内のajaxの表示の部分がでません。
bottom部分をコメント文にした場合は、
予定通り、ajaxの表示が働いている状況です。

また、他のjqueryのプラグインvalidateも追加しましたが、
messageが表示されず。

どちらもエラーはでないのですが、
動作しません。

jqueryは、3.1.1
追記
jqueryを2.2.4に変更しました。
cakephp 2.xです。

javascript

1var user_id; 2var my_id; 3 4$(function(){ 5 //15秒ごとに読み込み 6 tweet_load(); 7 console.log('sucess'); 8 setInterval("tweet_load()", 15000); 9 console.log('sucess4'); 10}); 11 12$(document).on('click','button',function(event){ 13 if(!confirm('本当に削除しますか?')){ 14 /* キャンセルの時の処理 */ 15 return false; 16 }else{ 17 event.preventDefault(); 18 $.ajax({ 19 type:'POST', 20 url: '/cakephp/users/json_data', 21 dataType: 'json', 22 cache : false, 23 data : {id : $(this).val()}, 24 timeout:10000, 25 success: function(data) { 26 //console.log(user_id+' '+my_id+' '+$('textarea').val()+' '+time); 27 console.log('delite_success'); 28 tweet_load(); 29 }, 30 error: function(XMLHttpRequest, textStatus, errorThrown) { 31 alert('error'); 32 } 33 });} 34 }); 35 36$(document).on('click','div.submit',function(event) { 37 console.log('validate_start'); 38 $('form').validate({ 39 rules: { 40 textarea: { 41 required: true, 42 maxlength: 140 43 } 44 }, 45 messages :{ 46 textarea:{ 47 required: "空白です。", 48 maxlength:"140文字以内で入力して下さい。" 49 } 50 } 51 }); 52 53 if (!$('form').valid()) { 54 console.log('validate_error'); 55 return false; 56 } 57 console.log('validate_end'); 58 event.preventDefault(); 59 $.ajax({ 60 type:'POST', 61 url: '/cakephp/users/json_data', 62 dataType: 'json', 63 cache : false, 64 data : {'tweet_id': user_id ,'name': my_id , 'tweet' : $('textarea').val()}, 65 timeout:10000, 66 success: function(data) { 67 $('textarea').val(""); 68 //console.log(user_id+' '+my_id+' '+$('textarea').val()+' '+time); 69 console.log('sucess'); 70 tweet_load(); 71 }, 72 error: function(XMLHttpRequest, textStatus, errorThrown) { 73 alert('error'); 74 } 75 }); 76}); 77 78 79function tweet_load(){ 80 81 var end_flag = 0; //最後のページまでいったら1にして次から読み込ませない 82$('div.loading').append('loading...'); 83 $(window).bottom({proximity: 0.5}); //proximityを0.5にするとページの50%までスクロールするとloadingがはじまる 84 console.log('通信1'); 85 $(window).on('bottom',function(){ 86 console.log('通信2'); 87 var obj = $(this); 88 if (!obj.data("loading")) { 89 obj.data("loading", true); 90 91 $('#loading').append('loading...'); //画面にloading...と表示 92 setTimeout(function() { 93 $('#loading').remove(); 94$.ajax({ 95 type:"POST", 96 url: '/cakephp/users/json_data', 97 dataType: 'json', 98 cache : false, 99 timeout: 10000}) 100 .fail(function(){ 101 //通信失敗時の処理 102 alert('通信失敗'); 103 }) 104 .done(function(data){ 105 alert('通信'); 106 user_id = data.user_id; 107 my_id = data.my_id; 108 var i=0; 109 console.log('sucess_jsondata'+i); 110 $("#output").empty(); 111 for(i in data.json_data){ 112 $("#output").append('<a href='+data.json_data[i].Tweet.name+'>'+data.json_data[i].Tweet.name+"</br>"); 113 var tweet =data.json_data[i].Tweet.tweet; 114 tweet =tweet.replace(/\r?\n/g, '<br>'); 115 tweet =tweet.replace(/((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g, '<a href="$1">$1</a> '); 116 $("#output").append(tweet+"</br>"); 117 $("#output").append(data.json_data[i].Tweet.tweettime+"</br>"); 118 //console.log(i); 119 if(data.my_id==data.json_data[i].Tweet.name){ 120 $("#output").append('<button type="button" name="delite" id="delite" value='+data.json_data[i].Tweet.id+'>削除</button></br>'); 121 } 122 $("#output").append("</br>"); 123 } 124 })}, 1500); 125 } 126 }); 127     $('html,body').animate({ scrollTop: 0 }, '1'); 128}; 129

form部分も追加
cakephpのctpです。

php

1<?php 2echo $this->Html->script('https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js'); 3echo $this->Html->script('jquery.bottom-1.0'); 4echo $this->Html->script('jquery.validate'); 5echo $this->Html->css('index');?> 6 7 <?php 8 echo $this->Form->create('Tweet'); 9 echo nl2br($this->Form->textarea('tweet', array('cols'=>100, 'rows'=>4,'required' => false,'error'=>false))); 10 echo $this->Form->hidden('tweet_id',array('value'=> $user['id'])); 11 echo $this->Form->hidden('name',array('value'=> $user['username'])); 12 echo $this->Form->submit('投稿',array(/*'onclick'=>'index',*/'name' => 'submit')); 13 echo $this->Form->end(); 14endif; 15?> 16 <h3>ホーム</h3> 17 <div id="output"> 18 <div id="delite"></div> 19 <div class="loading"></div> 20 </div>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

jQuery.bind() は3.0以降非推奨になっているため、1系統か2系統を使用してみてはいかがでしょうか。

【.bind() | jQuery API Documentation】
http://api.jquery.com/bind/

Returns: jQueryversion deprecated: 3.0

【jQueryのbindとonの違い - Qiita】
http://qiita.com/nmta/items/310aa1cf385fa55129c1

また、エラーは出ていませんか?デベロッパーツールで確認してみてください。

【Web開発でよく使う、特に使えるChromeデベロッパー・ツールの機能 - Build Insider】
http://www.buildinsider.net/web/chromedevtools/01

投稿2016/10/25 19:45

kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usuallyi

2016/10/26 00:28

bindは非推奨になっていたのですね。 2系統でしましたが、実行されません。 コンソールのログで確認しましたが、 エラーは表示されませんでした。
kei344

2016/10/26 12:26

tweet_load()を何回も呼んでいますが、$(window).on('bottom',function(){を何回も登録することになるうえ、そのイベントまで動作しないので読み込み(AJAX)は起こらないと思います。 $(window).on('bottom',function(){の中身がtweet_load関数として定義されるべきものなのでは。
usuallyi

2016/10/26 14:04

コメントの通り、$(document).ready(function()の中にtweet_loadの中身を移し、 setintervalもコメントにし、 $(window).on('bottom',function()が一度しか動かない様に変更しましたが、動作しませんでした。 やはり、$(window).on('bottom',function()内のプログラムが実行されていません。
kei344

2016/10/26 14:37

https://jsfiddle.net/nw411jug/ とりあえず中の関数を削除して動くかどうか試してから少しずつ中身を実装して行って見るのが良いと思います。
usuallyi

2016/10/26 14:55 編集

$(document).ready(function() { var end_flag = 0; //最後のページまでいったら1にして次から読み込ませない $(window).bottom({proximity: 0.5}); //proximityを0.5にするとページの50%までスクロールするとloadingがはじまる console.log('通信1'); $(window).on('bottom',function(){ $('div.loading').append('loading...'); console.log('通信2'); }); }); 中の関数を削除して、 上記の文を実行しましたが、 console.log('通信2')というログがこなかったので、 プラグインが機能していない可能性ってあるのでしょうか? chromeにてhtmlのソースからjqueryのスクリプトのurlをクリックすると、 プラグイン内のソースが確認できるので、 読み込んでいないというわけでは、ないとおもうのですが.....
kei344

2016/10/26 15:03

> プラグインが機能していない可能性 読み込みに失敗するとエラーが出るので、わかるとおもいます。 proximityの値を変えるとかしてみてはいかがでしょうか。
usuallyi

2016/10/26 15:13

proximityも0.9,0.01など試しましたが、 上手く動作しませんでした。 また、jquery.bottomのdemo.htmlのscript部分と、 divの要素をhtml内に入れて、 確認しましたが、 うまく動作しません。 何か、cakephp内で根本的にまちがえているのかもしれません。
kei344

2016/10/26 15:52

jquery.bottomはスクロールが発生しなければ動かないようです。また、HTMLの構文に問題がある場合(閉じタグなどが無く崩れているなど)も予想と違う挙動をすることもあります。
usuallyi

2016/10/26 16:12

ajaxでjsonで出力するデータは、 3000行近くあるので、 スクロールは、発生しているとおもいます。 HTMLをもう一度見直します。
usuallyi

2016/10/27 14:43 編集

一度、20件ほど初期に表示してから、 それ以後、jsonにて、 windowをうごかしましたら、 jquery.bottomの動作が確認できました。 page情報をjsonにて送ろうとしたら、 ajaxがエラーになってしまっていますが、 また、別に質問いたします。 回答して頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問