wordpressのwp.Vicunaは軽そうでいいんだけど、どうもiG:Syntax Hiliter のレイアウトがくずれるな。
最近CakePHPを使ってみているけれども、ちょっとはまったのでメモ。
はまった状況は下記の通り。
- 現象
- 下記をもちいた文字列コンプリーション機能を持つテキストボックスの作成において、意図したとおりの動作をしないケースがあった。
- CakePHP
- jQuery
- autocompleteライブラリ(JSON使用)
- IE
ただし、Firefoxでは正常に動作した。
- 実装
- 今回の問題となった実装を述べる。
- jQueryのautompleteプラグインを用いてコンプリーション機能を持つテキストボックス(input type=”text”)を作成する。コンプリート用のデータはJSON形式でJavascript側に渡すとする。データ取得用のURLは“~~/モデル名/autocomplete/”とする。
- Javascript側に渡すJSONデータを返すページをCakePHPで作成する。適当なコントローラにfunction autocomplete()を追加し、対応するビュー(autocomplete.thtml)を作成する。 autocomplete()内で$this->layout = “ajax”;とし、余計なhtmlタグを出力しないようにする。
- autocomplete.thml内にJSON形式でデータを出力するコードをかく。
CakePHPを用いて作成したWebページにおいて、Ajaxによる文字列コンプリーションを行った。
具体的な実装方法は以下の通り。 - 原因
- “~~/モデル名/autocomplete/”で返すページにCakePHPが自動的に表示にかかった時間を出力していた。
出力されていたのはHTMLコメント形式のデータ<!– x.xxx s –>。
結果として返されていたデータは下記のような形式となっていた。
[‘aaa’,’bbb’,’ccc’] <!– 0.123s –>
jQueryのJSONパーザにおいて、Firefoxでは上記形式を正しくパーズできるが、IEでは処理できずにエラーとなっていた。 - 対処
- “config/core.php”で定義されているdefine(‘DEBUG’, 1);を0にすれば、時間出力はされなくなるので、実際にリリースする際は問題ない。ただし開発中はDEBUGを定義しておきたいため、今回は “webroot/index.php”の最下段
if (Configure::read() > 0) { echo "<!-- " . round(getMicrotime() - $TIME_START, 4) . "s -->"; }
をコメントアウトした。
- 参考文献
以上
関連記事
- Newer: ゼルダDS
- Older: 名セリフデータベース
Comments:1
- コスミー 07-06-24 (日) 23:09
-
IEだと番号がめちゃくちゃだな。
Trackbacks:4
- Trackback URL for this entry
- http://red-treasure.com/report/wp-trackback.php?p=28
- Listed below are links to weblogs that reference
- CakePHP+jQuery from コスミー報告書[社外秘]
- trackback from 00:31 13-04-20 (土) 13:22
-
00:31
コスミー報告書[社外秘] – CakePHP+jQuery
- trackback from Advanced links search 13-05-01 (水) 22:13
-
Advanced links search
コスミー報告書[社外秘] – CakePHP+jQuery
- trackback from Online Casino - onlinecasinos911.co.uk 13-07-17 (水) 19:01
-
Online Casino – onlinecasinos911.co.uk
コスミー報告書[社外秘] – CakePHP+jQuery
- trackback from :: ENZOHEALTH.COM :: - C.F. – 레드 디어 13-07-19 (金) 4:31
-
:: ENZOHEALTH.COM :: – C.F. – 레드 디어
コスミー報告書[社外秘] – CakePHP+jQuery