让ecside2离开prototype.js

虽然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:怎么觉得这个文章俺好像写过一次了,汗...
======================================================
又改了一下,吧“提交...”挪到中间了,同时为排序加了“提交”

你可能感兴趣的:(JavaScript,jquery,Ajax,框架,prototype)