浏览 356 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-02-25
prototypejs有沒有像php的interface, implement的功能呢??
為什麼我需要這些object的特性呢? 因為我想把整個項目用ajax實現 但問題是令到整個項目產生了很多相似但不完全相同的部份 例如
function formSubmit(e){
var frmObj=Event.element(e);
var pars=Form.serialize(frmObj.id);
var url = frmObj.action;
ajaxObj = new Ajax.Request(
url,
{
method: 'post',
postBody: pars,
asynchronous: true,
onFailure:loginFailure,
onSuccess:getResponse
}
);
Event.stop(e);
}
每一頁也充滿了大大小小的這一類的function但,當中的onSuccess, onFailure等的function及parameter會不同,如何可以減少這類重覆的代碼呢? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
| 返回顶楼 | |
|
时间:2008-02-25
我们项目都是自己整个写js代码
如果是上面的那个问题,我会再把Prototype的Ajax.Request再封装一下以达到要求。
function formSubmit(e){
var frmObj=Event.element(e);
var pars=Form.serialize(frmObj.id);
var url = frmObj.action;
ajaxObj = new MyAjaxPost(url,pars,getResponse,loginFailure);
);
Event.stop(e);
}
function MyAjaxPost(url, pars, succCallback, failCallback) {
return new Ajax.Request(
url,
{
method: 'post',
postBody: pars,
asynchronous: true,
onFailure:failCallback,
onSuccess:succCallback
}
);
}
更极端的情况下,如果整个表单提交代码都像上面,再封装下,传form,success callback, failure callback似乎可以完成要求。 |
|
| 返回顶楼 | |
|
时间:2008-02-25
你的方法正是我想實現的方法,但實際上不能完全實現
例如以下這兩個很相似的function,但parameter數量不一樣,function的起初又有一點點分別, 這樣便很難用一個object便可以實現
function formEnquiry(frmObj,validObj){
var pars=Form.serialize(frmObj.id);
var url = frmObj.action;
setLog(url+'?'+pars,'ajax');
ajaxObj = new Ajax.Request(
url,
{
method: 'post',
postBody: pars,
asynchronous: false,
onCreate:toggleLoadingCorner,
onFailure:formFailure,
onSuccess:function(result){
formResponse(result,frmObj,validObj);
},
onComplete:function(){
toggleLoadingCorner();
_frmSubmitCnt=0;
if (frmObj['actionID'].value=='del'){
window.setTimeout(function() {
history.back();
},8000);
}
}
}
);
}
function formEnquiry(frmObj,validObj,FCKlist){
if (frmObj['actionID'].value=='del'){
var hiddenVal=frmObj.getInputs('hidden');
hiddenVal.invoke('enable');
var pars=Form.serializeElements(frmObj.getInputs('hidden')) + "&submitBtn=" + frmObj['submitBtn'].value;
} else {
var pars=Form.serialize(frmObj.id);
}
var url = frmObj.action;
setLog(url+'?'+pars,'ajax');
ajaxObj = new Ajax.Request(
url,
{
method: 'post',
postBody: pars,
asynchronous: false,
onCreate:toggleLoadingCorner,
onFailure:formFailure,
onSuccess:function(result){
formResponse(result,frmObj,validObj,FCKlist);
},
onComplete:function(){
toggleLoadingCorner();
_frmSubmitCnt=0;
if (frmObj['actionID'].value=='del'){
window.setTimeout(function() {
history.back();
},8000);
}
}
}
);
}
|
|
| 返回顶楼 | |




