虽然fins老大不再维护Ecside,但是俺一直在用着它呀,所以只好自己动手丰衣足食了。Ecside一个不爽的地方是依赖prototype.js,而且(好像)只用到了它的ajax。俺们的项目中底层js框架用的是jquery,而且即便不用jquery,仅仅为了一个ajax而引进50k的prototype.js也是非常不值得的。所以自己修改了一下ecside.js文件:
//找到Me.ajaxSubmit = function(resfunc, asy, parameter) 函数,注释掉
//Form.request方法的调用,改为:
jQuery.ajax({
type: 'POST',
url: Me.ECForm.action,
data: jQuery(Me.ECForm).serialize(),
beforeSend: ECSideUtil.setRequestHeaders,
async: asy,
complete: resfunc
});
//找到ECSideUtil.doAjaxUpdate = function(url, pars, callBack, formid)函数,注释掉
//var myAjax = new Ajax.Request(url, {...,改为:
jQuery.ajax({
type: 'POST',
url: url,
data: pars,
beforeSend: ECSideUtil.setRequestHeaders,
async: true,
complete: callBack
});
//为EcSideUtil添加一个函数(从prototype中摘出来的):
ECSideUtil.setRequestHeaders = function(xhr, extras) {
var headers = {
'X-Requested-With': 'XMLHttpRequest',
'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
};
if (this.method == 'post') {
headers['Content-type'] = this.options.contentType +
(this.options.encoding ? '; charset=' + this.options.encoding : '');
/* Force "Connection: close" for older Mozilla browsers to work
* around a bug where XMLHttpRequest sends an incorrect
* Content-length header. See Mozilla Bugzilla #246651.
*/
if (this.transport.overrideMimeType &&
(navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
headers['Connection'] = 'close';
}
for (var i = 0, length = ECSideConstants.AJAX_HEADER.length; i < length; i += 2)
headers[ECSideConstants.AJAX_HEADER[i]] = ECSideConstants.AJAX_HEADER[i+1];
};
OK,搞定。如果不想用jquery,可以使用任何js框架,比如用ExtJS,也可以自己写一个Ajax提交的方法。最后的那个setRequestHeaders可以不要的,有很多方法设置header...
BTW:怎么觉得这个文章俺好像写过一次了,汗...
======================================================
又改了一下,吧“提交...”挪到中间了,同时为排序加了“提交”
- ecside-unpack.rar (16.2 KB)
- 描述: 吧ecside-unpack.js改名为ecside.js即可使用。注释中By SAM是俺改的地方
- 下载次数: 143
分享到:
相关推荐
《prototype_1.7.3.js:JavaScript框架的里程碑》 在JavaScript的世界里,Prototype库是一个不可或缺的重要组成部分,尤其在Web开发领域,它为开发者提供了强大的功能和便利性。Prototype_1.7.3.js是这个库的一个...
2. **DOM操作** - 为了解决JavaScript操作DOM的繁琐,prototype.js 提供了一系列便捷的方法,如`Element.select()`用于选取一组元素,`Element.hide()`和`Element.show()`控制元素的可见性,以及`Element.update()`...
《prototype.js:JavaScript框架的核心与应用》 在Web开发领域,JavaScript库和框架极大地提高了开发效率,其中Prototype.js就是一款非常流行的开源JavaScript框架。本文将深入探讨Prototype.js的核心概念、功能...
《Prototype.js 1.4-1.6:JavaScript 动态原型框架的探索与实践》 Prototype.js 是一个广泛使用的JavaScript库,它扩展了JavaScript语言的功能,为开发人员提供了更强大的面向对象编程支持。该库的核心特性是其对...
`prototype.js`是一个开源库,旨在扩展JavaScript的基础功能,尤其是面向对象编程的支持。这个库由Sam Stephenson创建,是Prototype Library的一部分,广泛应用于Web应用开发中,尤其在Rails框架下的Ajax开发。 ###...
Prototype.js 是一个开源的JavaScript库,它扩展了JavaScript语言,为开发者提供了许多便利的功能,特别是在对象操作、DOM操作和事件处理方面。1.6版本是该库的一个重要里程碑,引入了诸多改进和新特性。 ### 1. ...
"Prototype.js"是一个针对JavaScript的开源库,旨在增强和扩展JavaScript的基本功能,尤其在处理DOM(文档对象模型)操作、事件处理以及Ajax交互时提供了极大的便利。 ### 1. Prototype.js核心概念 - **原型链**:...
Prototype.js 是一个开源JavaScript库,由Sam Stephenson于2005年创建,主要用于简化DOM(文档对象模型)操作,增强JavaScript的面向对象编程能力,以及提供实用的函数扩展。它在Web开发中扮演着重要的角色,尤其在...
《Prototype.js 1.6:JavaScript 动态对象增强库的深度解析》 Prototype.js 是一个广泛使用的 JavaScript 库,它为浏览器环境提供了许多实用的功能,尤其是在对象操作和事件处理方面。1.6 版本是该库的一个重要里程...
《prototype.js 1.4版开发者手册》是JavaScript开发领域中的一个重要参考资料,尤其对于那些希望深入理解并利用Prototype库的开发者来说,它是一份不可多得的资源。Prototype.js是一个强大的JavaScript库,由Sam ...
在JavaScript的世界里,Prototype.js是一个著名的库,它扩展了JavaScript的内置对象,为开发者提供了更加便利的编程体验。本实例将深入探讨如何利用Prototype.js来实现弹出窗口和移动窗口的功能,这对于创建交互性强...
Prototype.js是最早期的JavaScript框架之一,它的设计目标是增强JavaScript的基本功能,使得JavaScript的面向对象编程更加简洁和强大。Prototype的核心特性包括: 1. **对象扩展**:Prototype通过扩展JavaScript的...
prototype.js是一个非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajax,国外有多个基于此类库实现的效果库,也做得很棒。 prototype.js不仅是一个有很大实用价值的js库,而且有很...
2. **Selectors API**:Prototype.js兼容了CSS选择器,提供了`$$()`函数,可以像操作CSS一样选取DOM元素,增强了JavaScript的选择器能力。 3. **Element对象**:Prototype.js强化了DOM元素的操作,如`Element.hide...
**Prototype.js** 是一个轻量级的JavaScript库,旨在简化DOM操作,提供面向对象的JavaScript编程,并且包含一些实用的辅助函数。在2005年,Prototype.js因其强大的功能和易用性而受到开发者的欢迎,尤其在创建动态...