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

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

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

CakePHP

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

Q&A

3回答

12548閲覧

cakePHPのJQueryの読み込みについて教えてください。

TChanger

総合スコア69

jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

CakePHP

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

0グッド

1クリップ

投稿2015/05/18 10:56

cakePHPでのJQueryの使い方で質問させて頂きます。

自分でサンプルで作った簡単なシステムを、
社内で調整して使うことになったのですが、
自分のサンプルはちょっと人に見せられたものじゃなったので、
新しくBAKEし直して、制作を始めました。

そこでなのですが、
同じ場所に同じようにJQueryのdialogに関するコードを書いたのに
どうしても新しく制作しているcakeでエラーを吐いてしまいます。
エラー内容は

Error: cannot call methods on dialog prior to initialization; attempted to call method 'close'

というのが出てしまいます。

サンプルと本番作成との少し違いがありまして、
cakeのバージョンが
サンプルは**「2.5.5」**
本番は**「2.4.10」**
という事と、
**「2.5.5」のサンプルはJQueryはCDNを使用しているのですが、
本番はローカル環境でもつかうなら・・・
という事も考えて
「2.4.10」**はサイトからダウンロードした
UIフォルダ(jquery-ui-1.11.4.custom.zipを展開したもの)を
webrootに配置しております。
読み込み方は、ダウンロードしたUIのサンプルのhtmlを参考に
ヘルパーで読み込んでいる感じにしております。

**「2.4.10」**の方に上記のエラーが出てしまいます。
ちなみに、CDNで読み込みをしてみてもエラーが出てしまいます。
これはcakeのバージョンが関係している性でしょうか?

長くなってしまいましたが、
助けていただきたいことは、
0.cakeのバージョン違いでこのような結果がでてしまったのか?
0.正しいUIフォルダのjsファイルの読み込み方
0.そもそもダウンロードしたJQueryUIのフォルダが合っているのか?

最後にdefault.ctpの読み込み部分を記載させて頂きます。
宜しくお願いします。

lang

1//CSSの読み込み 2echo $this->Html->css(array('reset','cake.generic')).PHP_EOL; 3echo $this->Html->css(array('jquery-ui.min','jquery-ui.structure.min','jquery-ui.theme.min')).PHP_EOL; 4echo $this->fetch('css'); 5 6//JQueryの読み込み 7//jsフォルダ直下に展開しました。 8//\external\jquery\jquery.jsの所にあったjsファイルをwebrootの直下に置きました。 9echo $this->Html->script(array('jquery','jquery-ui.min'),array('inline'=>true)); 10echo $this->fetch('script');

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

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

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

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

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

guest

回答3

0

コメント数が限界まで行ったようなので別回答で。

getPreventDefault() の使用は推奨されません。代わりに defaultPrevented を使用してください。

が出るようになったということは、これまでjqueryは1.11.0以上、または、2.1.0以上が読み込まれていたと思われます。(jQuery-UI付属は1.10.2)
CDNで利用していたjQueryのバージョンと異なっていることが原因かもしれませんね。

default.ctpだけでなくjavascriptファイルの格納場所で決まります。
javascriptがきちんと読み込めているかはブラウザに搭載されている開発者向けのツールから確認するのが確実です。
大抵のブラウザでF12で出ます。
![デバッガ]WIDTH:600

投稿2015/05/19 10:06

sho_cs

総合スコア3541

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

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

TChanger

2015/05/19 12:30

色々とご指導いただきましてありがとうございます。 ここに写真が載せられないみたいなので、スクリーンショットを別回答で載せてみたいと思います。
TChanger

2015/05/19 12:36

と思いましたら、自己解決用だったようで諦めました。汗 添付して下さった写真と同じような感じの表示で、jsフォルダに入っているjqueyのファイル名がありました。 UIをダウンロードした「external」の中にあったjqueryを読み込めば、 他に最初に読み込まなきゃいけないファイルは無いですよね? UIフォルダの中のサンプルndex.htmlを参考にしたのですが・・・汗
sho_cs

2015/05/20 00:54

jquery-ui、または、jquery-ui.minは読み込まれていますか?
guest

0

cannot call methods on dialog prior to initialization

イニシャライズに優先してdialogのメソッドをコールしてはいけません

って言ってますね。あたりまえですが。

インデント全部ぶっ壊されてるのでよく読めないんですが、
ダイアログに関するコードを
$(document).ready(functioin(){

//この中

});

に入れたらどうなるでしょう?

(いい加減コメントでもコード書けるようにしてほしいですね…)

投稿2015/05/19 08:08

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

TChanger

2015/05/19 08:42

回答下さいましてありがとうございます。 試して見たのですが、出来ませんでした・・・汗 私の何かがきっと間違っているんですよね・・・・汗
退会済みユーザー

退会済みユーザー

2015/05/19 08:44

イニシャライズというのは dialog のイニシャライズですかね… コード全部みないとわからないかなぁ…
TChanger

2015/05/19 08:50

悲しいことに、sho_csさんのご回答にお返事させて頂きました、 ソース以外に今のところソースは無いのです。汗 $(function(){ });で囲っても、 ご回答下さいました$(document).ready(functioin(){ });で囲っても 同じ状態でございます。汗
退会済みユーザー

退会済みユーザー

2015/05/19 08:52

まぁ、エラーの通り、何かの(恐らくdialogオブジェクト)のイニシャライズの前にそのメソッドを呼ぼうとしてるので、そのあたりかなぁと。 僕は先日グローバル変数openを汚染させてwindow.openが死んだので、やっぱりコード見ないとよくわからないです。すいません。
TChanger

2015/05/19 09:08

こちらこそ大変申し訳ありません。 どのソースをお伝えすれば良いのかもわからず・・・ どうしても解決に至らなかった時は、サーバーにあげてみますので・・・笑
guest

0

  1. cakeのバージョン違いでこのような結果がでてしまったのか?

エラーの内容はjavascriptのエラーなのでcakeのバージョンは関係ないと思います。
ただし、CakePHPの変更履歴からもわかるように2.4.10から2.5.5では様々な変更が行われています。
一度目を通されたほうが良いと思います。

  1. 正しいUIフォルダのjsファイルの読み込み方

javascriptはwebroot/js/、cssはwebroot/css/に格納します。
js、css直下に配置した場合は以下のように指定します。

lang

1echo $this->Html->script(array('jquery','jquery-ui.min'),array('inline'=>true));

js配下のサブディレクトリに格納した場合は以下のように指定します。

lang

1echo $this->Html->script(array('サブディレクトリ名/jquery','サブディレクトリ名/jquery-ui.min'),array('inline'=>true));
  1. そもそもダウンロードしたJQueryUIのフォルダが合っているのか?

ファイル名を見る限りは合っています。

エラー発生部分のソースは提示できますか?

投稿2015/05/19 02:25

sho_cs

総合スコア3541

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

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

TChanger

2015/05/19 02:53

ご回答下さりありがとうございます。 エラーではなく、質問に書かせて頂いたエラーをどこで吐いているかという ソースしか出てきませんでした。 以下私のソースです。 $("#dialog").dialog({ autoOpen: false, width: 'auto', height:'auto', buttons: [ { text: "Ok", click: function() { var url = $("#dialog").find('form').attr('action'); var data = $("#dialog").find('form').serializeArray(); console.log(data); $.post(url, data, function(result) { console.log(result); if(result) { $("#dialog").html(result); } else { $("#dialog").dialog( "close" ); window.location.reload(); } }); } }, { text: "Cancel", click: function() {            $("#dialog").dialog( "close" ); } } ] }); // // Link to open the dialog $("[id^=dialogLink]").click(function( event ) { $("#dialog").dialog( "open" ); $("#dialog").load($(this).attr('href'),function(){ $("#dialog").dialog( "open" ); }); return false; }); バージョン2.5.5の方で同じことをしてみたのですが、 残念ながら結局同じ結果でした・・・ UIフォルダからではなくCDNで読み込むしか無いのでしょうか?汗
sho_cs

2015/05/19 07:36

2.5.5のCDNでしかうまく行っていないということでよいでしょうか? 私の環境で再現しようとしたんですがうまく行ってしまいます。(2.5.5&ダウンロードしたJS)
TChanger

2015/05/19 08:40

そうなんですか?!汗 「external」というフォルダがありますが、 この中にある「jquery.js」というファイルはwebrootの直下に置いたほうが宜しいのでしょうか??
TChanger

2015/05/19 09:06

何度も申し訳ありません。 default.ctpですが、指定は下記で合っていますでしょうか? //css echo $this->Html->css(array('jquery-ui.min','jquery-ui.structure.min','jquery-ui.theme.min')); //JQuery echo $this->Html->script(array('jquery','jquery-ui.min')); 再度入れなおしましたら、 getPreventDefault() の使用は推奨されません。代わりに defaultPrevented を使用してください。 というのが出たのですが、気にしなくて大丈夫ですよね?汗 しかも質問は’close’に対してだったのですが、次は’open’でも出てしまいました。汗
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問