`
ferreousbox
  • 浏览: 287196 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

实用的JS工具类(一)——表单AJAX提交

    博客分类:
  • AJAX
阅读更多

    前段时间在开发的时候也积累了几个通用的JS类,可以很方便的应用,下面发上来和大家分享一下~~~

1)表单AJAX提交 这个类参考了dojo里的表单提交,提取出来成为一个简单的应用

function Form(){};
Form.prototype
= {   
   
/**
     * 对指定的汉字进行编码设置,尤其是在使用prototype.js的时候,如果传递的参数
     * (不是加在URL后面的)中含有中文的话就会报错误。
    
*/
    encode :
function(/*string*/str, /*boolean*/multiPart) {
       
if (typeof(str) != 'string') return null;
       
var mt = multiPart || false;
       
return mt == true ? encodeURI(str) : encodeURIComponent(str);
    },
   
   
/**
     * 对使用encode进行编码的进行解编码
    
*/
    decode :
function(/*string*/str, /*boolean*/multiPart) {
       
if (typeof(str) != 'string') return null;
       
var mt = multiPart || false;
       
return mt == true ? decodeURI(str) : decodeURIComponent(str);
    },

   
/**
     * 将指定form节点的所有可提交元素组合成字符串返回
    
*/
    _formValues :
function(/*object*/formNode)
    {
       
if ((!formNode) || (!formNode.tagName) || (!formNode.tagName.toLowerCase() == "form")) {
           
alert('请指定一个正确的form节点!');
           
return null;
        }
       
var values = [];
       
for (var i = 0; i < formNode.elements.length; i++) {
           
var elm = formNode.elements[i];
           
if (!elm || elm.tagName.toLowerCase() == "fieldset" || !this._formFilter(elm)) {
               
continue;
            }
           
var name = this.encode(elm.name);
           
var type = elm.type.toLowerCase();
           
if (type == "select-multiple") {
               
for (var j = 0; j < elm.options.length; j++) {
                   
if (elm.options[j].selected) {
                        values.push(name
+ "=" + this.encode(elm.options[j].value));
                    }
                }
            }
else {
               
if (["radio", "checkbox"].include(type)) {
                   
if (elm.checked) {
                        values.push(name
+ "=" + this.encode(elm.value));
                    }
                }
else {
                    values.push(name
+ "=" + this.encode(elm.value));
                }
            }
        }
       
var inputs = formNode.getElementsByTagName("input");
       
for (var i = 0; i < inputs.length; i++) {
           
var input = inputs[i];
           
if (input.type.toLowerCase() == "image" && input.form == formNode && this._formFilter(input)) {
               
var name = this.encode(input.name);
                values.push(name
+ "=" + this.encode(input.value));
                values.push(name
+ ".x=0");
                values.push(name
+ ".y=0");
            }
        }
       
return values.join("&") + "&";
    },

   
/**
     * 表单可提交元素过滤器.
    
*/
    _formFilter :
function(/*object*/node) {
       
var type = (node.type || "").toLowerCase();
       
return !node.disabled && node.name && !(["file", "submit", "image", "reset", "button"].include(type));
    },

   
/**
     * 向服务器发送请求,并指定处理函数
    
*/
    request :
function(/*string*/_url, /*function*/onSuccess, /*string*/paras, /*string*/_method) {
       
new Ajax.Request(
            _url,
            {
                method :
!_method ? 'POST' : _method,
                evalScripts :
true,
                parameters :
!paras ? '' : paras,
                onComplete : onSuccess
            }
        );
    },

   
/**
     * 使用form进行表单提交.
    
*/
    formSubmit :
function(/*string*/_url, /*function*/onSuccess, /*string*/_formId)
    {
       
var paras = this._formValues($(_formId));
       
if (paras == null) return;
       
this.request(_url, onSuccess, paras, 'POST');
    }

};
 

   一篇不能发太多,就先发一个,另外的下一篇再发咯,呵呵~~~~注意使用的时候要导入prototype.js才可以的~~ 微笑 

分享到:
评论

相关推荐

    使用prototype简化Ajax操作

    Prototype.js库还包含了许多其他实用功能,如DOM操作、事件处理、类和对象扩展等,这些都极大地提升了JavaScript开发的效率和代码的可读性。通过学习和使用Prototype,你可以更专注于业务逻辑,而不是底层的Ajax实现...

    jQuery实现登录注册表单提交左右摇晃特效源码.zip

    本资源"jQuery实现登录注册表单提交左右摇晃特效源码.zip"提供了一种利用jQuery创建动态登录和注册表单的方法,其中包含了一个有趣的视觉效果——表单在提交时会呈现左右摇晃的动画。 首先,我们要理解jQuery库的...

    jquery form表单美化插件

    今天我们将深入探讨的是一个关于jQuery的实用工具——"jquery form表单美化插件"。这个插件专门用于提升网页表单的用户体验和视觉效果,使原本平淡无奇的HTML表单变得更具吸引力。 首先,我们要理解jQuery Form插件...

    JSF第一步--JSF+Spring+ Hibernate+AJAX编程实践 试读

    在IT行业中,JavaScript Server Faces(JSF)是一种用于构建企业级Web应用的Java框架,它提供了组件模型和事件驱动的编程模型。结合Spring框架,我们可以实现更灵活的依赖注入和服务管理,而Hibernate则是流行的ORM...

    ASP.NET源码——ASP.NET管理MySQL数据库的小工具.zip

    这个压缩包"ASP.NET源码——ASP.NET管理MySQL数据库的小工具.zip"显然包含了使用ASP.NET技术开发的一个小型工具,该工具专用于管理MySQL数据库。让我们深入探讨一下相关的知识点。 首先,ASP.NET提供了丰富的控件和...

    AJAX控件之ConfirmButton

    【标题】"AJAX控件之ConfirmButton"指的是在ASP.NET开发中,使用AJAX技术实现的一种特殊按钮控件——ConfirmButton。这个控件在用户点击时会弹出一个确认对话框,类似于浏览器内置的JavaScript确认提示,为用户提供...

    众妙之门——JavaScript与jQuery技术精粹

    《众妙之门——JavaScript与jQuery技术精粹》是一本由Smashing Magazine出版的高端IT图书,它汇聚了全球顶尖网站设计专家的经验与智慧,旨在深入解析JavaScript和jQuery的关键技术,帮助读者提升在网页设计与开发中...

    大二Web课程设计期末考试——基于HTML+CSS+JavaScript+jQuery电商类化妆品购物商城

    - 应用了JavaScript和jQuery来增加页面的动态效果,比如鼠标滑过时的特效、导航栏的效果、表单验证等,这些增强了用户交互体验的同时也让学生有机会学习前端脚本语言的基础用法。 5. **多媒体元素**: - 除了...

    Ajax实战:Prototype与Scriptaculous篇pdf

    在本篇中,我们将深入探讨两个JavaScript库——Prototype和Scriptaculous,它们是Ajax开发中的重要工具。 ### Prototype Prototype是一个强大的JavaScript框架,它扩展了JavaScript的基本对象和函数,简化了DOM...

    【卷一/共两卷】AJAX实战pdf高清版90M

    附录A Ajax工具箱 A.1 欲善其事,先利其器 A.1.1 获取适合的工具 A.1.2 创建自己的工具 A.1.3 维护工具箱 A.2 编辑器和IDE A.2.1 在代码编辑器中需要什么功能. A.2.2 当前的工具 A.3 调试器 A.3.1 为什么要使用调试...

    Introducing Microsoft ASP.NET AJAX

    - **ASP.NET AJAX Control Toolkit**:提供了一组预定义的服务器控件,这些控件可以轻松地添加到现有的ASP.NET Web表单中,实现AJAX功能,例如UpdatePanel控件允许在不刷新整个页面的情况下更新部分HTML内容。...

    网页学习ppt网页设计与开发——HTML、CSS、JavaScript实例教程

    再者,JavaScript是一种强大的客户端脚本语言,用于增加网页的交互性。它可以操作DOM(Document Object Model),改变HTML元素的属性,响应用户事件,甚至与服务器进行异步通信(AJAX)。基础概念如变量、函数、条件...

    点对点聊天室的例子ajax

    【标题】"点对点聊天室的例子ajax"揭示了这个项目的核心技术——使用Ajax构建一个实时的、交互式的聊天室。Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它...

    Ajax详解.rar

    本系列的作者是一位 Ajax 专家,他演示了这些技术如何协同工作 —— 从总体概述到细节的讨论 —— 使高效的 Web 开发成为现实。他还揭开了 Ajax 核心概念的神秘面纱,包括 XMLHttpRequest 对象。 五年前,如果不...

    JSP信息办公类实例开发源码——基于struts的图书管理系统.zip

    最后,JSP页面负责展示结果,用户可以通过HTML表单提交请求,JSP通过EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)标签进行数据绑定和控制流程。 在这个系统中,Struts的配置文件...

    一个基于C#+AJAX 实现的Text Box Watermark Extender控件源码

    总的来说,TextBox Watermark Extender控件是一个实用的工具,它利用C#和AJAX技术提高了Web表单的易用性。开发者可以借此学习到如何结合使用服务器端和客户端技术来增强Web应用的交互性和用户体验。

    基于MVC模式的Struts框架中Ajax研究与应用.pdf

    - **实时数据校验**:使用Ajax可以在用户输入数据的同时立即进行校验,而无需提交整个表单。 - **异步数据加载**:通过Ajax可以在后台加载数据,而不会中断用户的操作,提供更流畅的用户体验。 - **局部页面刷新**:...

    前端开发权威指南——融合html javascript css php .doc

    包括变量、数据类型、操作符、流程控制、函数、对象和类等,JavaScript为网页提供了丰富的动态功能,如表单验证、AJAX异步通信、DOM操作等。 4.3 框架和库 现代前端开发中,JavaScript框架和库如React、Vue、...

    静态门户网站实例——得艺

    综上所述,"静态门户网站实例——得艺"是一个综合运用jQuery、HTML、CSS和JavaScript技术的前端项目,展示了如何通过这些工具构建出功能齐全、交互性良好的静态网站。通过学习和研究这个实例,开发者可以加深对前端...

Global site tag (gtag.js) - Google Analytics