scriptaculousのinPlaceEditorを久々に使った。
そのときにonFailureの使い方がAjax.Requestとは違ったので、メモ。
2つ目の引数に、ajaxResponseのオブジェクトが来る。
new Ajax.inPlaceEditor(
...
{
...,
onFailure: function(ipe, httpObj){
alert(httpObj.responseText);
},
}
);
2009 年 12 月 12 日 土曜日
scriptaculousのinPlaceEditorを久々に使った。
そのときにonFailureの使い方がAjax.Requestとは違ったので、メモ。
2つ目の引数に、ajaxResponseのオブジェクトが来る。
new Ajax.inPlaceEditor(
...
{
...,
onFailure: function(ipe, httpObj){
alert(httpObj.responseText);
},
}
);
2009 年 12 月 9 日 水曜日
WordPressの自作プラグインでAjaxする方法で、正しく行う方法がないか探していた。Googleで検索しても、Ajaxを使ってるプラグインの情報がたくさん出てくるばっかりで、作り手に有益な情報を調べるにまでいけなかった。だから、必要なファイルのみを無理矢理require_onceで読み込んでインスタンスを生成してから、やりたい処理を行うという強引な方法を取っていた。しかし、Ajaxしたいところで毎回require_onceをやるのは面倒だし、正しくやる方法があるに違いないと思っていたら、あったよ!やっぱり!
http://wpdocs.sourceforge.jp/AJAX_in_Plugins
上のサイトの例では、javascriptライブラリとしてSACKを使っているが、俺はprototype.js&scriptaculousファンなので、prototype.jsを使ったAjaxで勝負!
まず、プラグイン側でjavascriptファイルを読み込む設定を行う。
プラグインの名前は、hogeとします。
/**
* /wp-content/plugins/hoge/hoge.php
*
* 管理画面でjavascriptを読み込む
*/
add_action('admin_enqueue_scripts', 'hoge_script_admin');
function hoge_script_admin($hook_suffix){
// 指定したページのみでjsを読み込むために、条件を設定
// ここではhogeプラグインのカテゴリー管理ページに焦点と絞ったとする
if (preg_match('/page_hoge_category_list$/', $hook_suffix)) {
// hoge_category.jsと、prototype.jsを読み込む
wp_enqueue_script('hoge_category', plugins_url('hoge/js/hoge_category.js'), array('prototype'), '1.0', false);
}
}
次に、hoge_category.js側に処理を記述する。
関数 update_category_list が呼ばれると、Ajaxでカテゴリーリストを更新する想定です。
function update_category_list(){
// ajaxurlはWordPressが定義してくれてる
var params =[];
// Ajaxアクションを指定
params.push('action=hoge_get_category');
// あとは必要なパラメータを設定
params.push('abc=xyz');
new Ajax.Updater(
'category_list', // 更新される領域のID
ajaxurl,
{
method: 'post',
parameters: params.join('&')
}
});
}
最後に、hoge_category.jsから呼ばれるサーバ側の処理を記述する。
// ajaxで呼ばれるアクションを追加する
add_action('wp_ajax_hoge_get_category', 'hoge_get_category');
// 実際に呼ばれるアクションを定義する
function hoge_get_category(){
$output = '<ul>' . "\n";
for($i = 1; $i < 10; $i++){
$output .= '<li>カテゴリーその'. $i .'</li>' . "\n"
}
$output .= '</ul>' . "\n";
echo $output;
}
これで、カテゴリーリストがAjaxで更新されます。
2008 年 9 月 9 日 火曜日
CakePHP1.1の話。
CakePHP Users in Japanで質問してたんですが、
AjaxHelper::editorで、エラーの場合にどうすればいいのか?で、一応自分なりに答えが出たので、ブログでも書いておこうかなと。ネットで調べても情報がなかったもんで。。。(探すの下手?)
一応、私がぶつかった問題をおさらいしておきますと、例えば重複を許さないカテゴリーの編集などをした場合に、既に存在するカテゴリ名などを入力されたらエラーにして、『そのカテゴリは既に存在します』みたいなエラーメッセージを表示したかったんです。しかし、それがAjaxHelper::editorを使った場合にどうすれば実装できるのかわからなかったわけです。
まず、CakePHPのAjaxHelperは基本的にprototype.jsとscriptaculousを使ってるので、Ajaxヘルパーを使うとこれらを使ったソースを自動的に吐いてくれる。ところが、AjaxHelper::editorメソッドは、scriptaculousのInPlaceEditorのオプションであるonFailureが指定できないっぽい。
/cake/libs/view/helpers/ajax.phpを見てみると、有効なオプションを指定する配列($editorOptions)にonFailureがなかった。editorメソッド内もちょこっといじってみたが(onFailureを加えそうな感じに)、できなかった。まあこれは私が安直にやったからだろう。もっと時間かければできるかも。
ただどちらにしろ、時間がもったいないのとcakeディレクトリ以下のソースに手を付けたくなかったので(単純に面倒だし、バグになったら嫌)、viewのthtmlファイル側でscriptaculousのInPlaceEditorの呼び出しをajaxヘルパーを使わずに書いた。それならonFailure書けるし。
今のところ、AjaxHelper::editorは、自分だけが使うんなら使ってもいいけど(要は運用面でカバー)、一般ユーザに使ってもらうには難しい気がします。エラー制御できんのは致命的だと思うんですが、これってeditorメソッドを使ったエラー制御ってできるんでしょうかね?
2008 年 9 月 4 日 木曜日
最短経路検索ができた。お試しページ作ってみたので、興味ある人はやってみてください。
自分でいうのもなんですが、面白いですよ!!勝手に線が引かれる快感。。。
まあ、WebAPIを使ってるから、俺は大した苦労はしてないんだけどさ!
http://hillclimb.319ring.net/pages/web_routing/
よければ掲示板とかにでも感想を教えてください!!
2008 年 9 月 1 日 月曜日
株式会社シリウステクノロジーが提供してくださっている最短経路検索を使えば、自転車でヒルクライムしようぜ!のコース登録が楽になるなぁと思った。いちいちチマチマとクリックしていく手間が省けるのだ。これは素晴らしい!と。それで現在、開発環境で試してるんだけど、いささか精度が悪い。まあ、首都圏内だと精度がいいらしいけれど、地方になると若干精度が落ちるようだ。
ひとまず、使用に耐えるレベルだった。あとの細かな修正は、例えば「点を1つ戻す」で戻りながら調節すればよいかなと。しかし、こいつをを使うと点を打ちすぎるせいか、今度は高度検索のWebAPIへのアクセスが多すぎるようになるらしく、高低表の画像を出力するときにエラーになってしまった。うーむ、あちらが立てば、こちらが立たず。というわけでリリースは延期です。
たしか、どっかのサイトで、高度検索APIの機能を自分のサーバに実装するためのノウハウが載っていたので、今度はそいつを実装してみてから考えるか。ただ、めっちゃ処理重そうだな。。。開発環境では動いても、レンタルサーバで動かなかったら、どうしよう。。。
xreaのサーバは安くていいけど、現在の環境はphp5がCGIで動いてるせいで、すげー重たく感じる。いや、俺のプログラムが重いのか?
コメント
コメントはありません