(function ($) {
window.XW = {}; //全局系统对象

//异步请求统一调用方法
XW.ajax = function (options, param, callback) {
var p = {
type: "get",
url: null,
dataType: "json", //数据类型
cache: false, //或者设置true
async: false, //是否异步
timeout: 5000, //延迟时间,0 表示一直等待
error: null, //失败的方法
beforeSend: null, //加载前的方法
complete: null //完成的方法
};

p = $.extend(p, options);
p.url = p.url ? (p.url.indexOf("://") < 0 ? pathUrl + p.url : p.url) : null;

$.ajax({
type: p.type,
url: p.url,
cache: p.cache,
dataType: p.dataType,
data: param,
timeout: p.timeout,
success: callback,
async: p.async,
error: function (xmlHttpRequest, textStatus, errorThrown) {
alert("错误:资源请求错误!\r\n代码:" + textStatus + "\r\n消息:" + errorThrown);
}
});
};

//提交表单(替换 EasyUI 表单提交方法)
$.fn.formSubmit = function(options) {
var p = {
url: null, // 提交地址
type: "post", // 提交方式,如果存在跨域请求,需要使用 get
dataType: "json", // 数据类型
param: null,
onSubmit: null,
onSuccess: null
};

p = $.extend(p, options);

var form = $(this);
//提交表单
function submitForm(datas) {
XW.ajax({ url: p.url, type: p.type, dataType: p.dataType }, datas, function (data) {
if ($.isFunction(p.onSuccess)) { p.onSuccess(data); }
});
}
//表单提交验证
function formChecker(tar) { return tar.form("enableValidation").form("validate"); }
//表单中的字段
var fields = form.find("input[class^='easyui-'], select[class^='easyui-']");

var formData = {};
$.each(fields, function (i, o) {
var id = $(o).attr("id");
var type = $(o).attr("class").split(" ")[0];
var isSingle;
switch (type) {
case "easyui-textbox": formData[id] = $(o)[type.split("-")[1]]("getText"); break;
case "easyui-datebox":
case "easyui-numberbox": formData[id] = $(o)[type.split("-")[1]]("getValue"); break;
default:
isSingle = $(o).attr("data-options").replace(/ /g, "").indexOf("multiple:true") < 0;
formData[id] = $(o)[type.split("-")[1]](isSingle ? "getValue" : "getValues"); break;
}
});
//添加额外参数
if (p.param != null) { for (var n in p.param) { formData[n] = p.param[n]; } }

if ($.isFunction(p.onSubmit)) {
var checkForm = formChecker(form);
if (checkForm) { submitForm(formData); }
} else {
submitForm(formData);
}
};
})(jQuery);

EasyUI 另一种form提交方式的更多相关文章

  1. Flink Yarn的2种任务提交方式

    Flink Yarn的2种任务提交方式 Pre-Job模式介绍 每次使用flink run运行任务的时候,Yarn都会重新申请Flink集群资源(JobManager和TaskManager),任务执 ...

  2. 表单<form></form>提交方式的区别

    <form action="" method="get/post"> 表单<form></form>的提交方式有两种:pos ...

  3. form提交方式Get与Post详解

    form作为Html的一个元素,它就是为了客户端提交数据而产生的,它有两个很重要的属性action和method,action属性指明了处理提交的数据的应用程序的URL,而method有两个值:POS ...

  4. jquery的几种ajax提交方式

    $.post( url, function(data){ if(data.retcode == "0"){ alert(data.retmsg); }else{ alert(dat ...

  5. jQuery - 几种异步提交方式

    $.post(url,params,callback); $.post("${ctx}/role/grant", {userId : $("#userId"). ...

  6. jquery.validate+jquery.form提交的三种方式

    原文:http://www.cnblogs.com/datoubaba/archive/2012/06/06/2538873.html jquery.validate+jquery.form提交的三种 ...

  7. springMVC怎么改变form的提交方式为put或者delete

    想着练习一下创建restful风格的网站呢,结果发现在jsp页面上并不能灵活使用put和delete提交方式.下面我的解决办法 一. form 只支持post和get两种提交方式,只支持get提交方式 ...

  8. jquery.validate校验+jquery.form提交,配合使用

    原文链接:http://www.cnblogs.com/datoubaba/archive/2012/06/06/2538873.html 概述:本篇主要讨论jquery.validate结合jque ...

  9. ajax Form提交与Payload提交

    后端处理前端提交的数据时,既可以使用Form解析,也可以使用JSON解析Payload字符串. Form解析可以直接从Request对象中获取请求参数,这样对象转换与处理相对容易,但在大片JSON数据 ...

随机推荐

  1. android DPI与分辨率的关系及计算方式

    android DPI与分辨率的关系及计算方式   Low   density (120), ldpi Medium   density (160), mdpi High   density (240 ...

  2. ipkg包管理

    添加ipkg更新源 你可以通过修改/opt/etc/ipkg.conf去添加 ############################ echo src optware http://ipkg.nsl ...

  3. java通过反射调用不同参数的方法

    import java.lang.reflect.Method; public class testReflect { /** * @param args */ public static void ...

  4. javascript&jquery 判断滚动到页面底部

      js 判断滚动到页面底部 CreateTime--2018年4月14日10:13:07 Author:Marydon 1.使用场景: 滚动到屏幕底部,触发加载分页数据请求(qq空间,手机端) 2. ...

  5. oracle 存储过程 返回结果集

      oracle 存储过程 返回结果集 CreationTime--2018年8月14日09点50分 Author:Marydon 1.情景展示 oracle存储过程如何返回结果集 2.解决方案 最简 ...

  6. linux命令:tail 命令

    tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新, ...

  7. CallableStatement简单使用

    直接上存储过程.函数 --运行不带參数但带返回值的存储过程 CREATE OR REPLACE PROCEDURE proc_getUserCount(v_totalCount OUT NUMBER) ...

  8. 转载【linux】Linux学习之CentOS6.x+7.x---网卡的配置

    转载至:http://www.cnblogs.com/smyhvae/p/3932903.html [正文] Linux系统版本:Centos 6.5 Linux系统版本:Centos 7 目的:将c ...

  9. 查询MYSQl数据表中的最后一条记录

    mysql: select * from table order by id DESC limit 1 oracle: select * from emp where id in (select ma ...

  10. spring in action 5.1 小结 spring mvc起步

    0 配置 DispatcherServlet 是 spring mvc的核心,常规配置方法可以查看之前博客.springMVC简单例子 在此使用servlet 3 规范和 spring3.1 功能增强 ...