コールバックめんどい
非同期通信やっててよく書くのがコールバック関数なんだけど書くのめんどいぽ。
なので最近はこうしてます。
テクニック?とまではいかないけど。
関数名は適当です。
ハイ。ごめんなさい。
function ahoaho(i,j){ var ajax = Kumu.Ajax.getS2AjaxComponent(); ajax.url = 'xxx.do'; ajax.params = {"no" : i , 'yyyy' : j}; ajax.doAction = setData; Kumu.Ajax.executeAjax(ajax); } function setData(response){ var data = eval('('+response+')'); for(var v in data){ var ele = $i(v); if(ele){ ele.innerHTML = data[v]; } } }
setDataは使いまわしてます。
objectのkeyをdocumentのidに合わせてガンガン入れ込んでます。
prototype.jsでいうUpdaterなんですけどUpdaterは1要素(1id)なのでチマチマめんどくさい。
(Updaterはinsertもできますけどね)
一気にやりたい時はこーいのでもいいかなと。
ルールとして
とすれば楽かなと。
function remoteAction(url,param, callcak){ var ajax = Kumu.Ajax.getS2AjaxComponent(); ajax.url = url; ajax.params = param; if(arguments.length == 2){ ajax.doAction = setData; }else{ ajax.doAction = callback; } Kumu.Ajax.executeAjax(ajax); } function setData(response){ var data = eval('('+response+')'); for(var v in data){ var ele = $i(v); if(ele){ ele.innerHTML = data[v]; } } }
使用するときは
function getRemoteData(i,j){ remoteAction('なんとかsearchAction.do', {"no" : i , 'date' : j}); }
みたいにパラメータに合わせてラッパーを一枚かけば終わりかなと。
あとまあ一応コールバック関数を指定なしでも簡単なレベルであればいけますよと。
(デフォルトの関数入れて動きますよと)
最近、仕事でこんな感じで書いてますよと。
追記
IEだと怒られるとの指摘により修正しました。
うくく。