(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. 用mapreduce来操作hbase的优化

    (1)scan.setCacheBlocks(false); 初始化map任务    TableMapReduceUtil.initTableMapperJob 本次mr任务scan的所有数据不放在缓 ...

  2. JSP生成静态html网页

    /** * jsp生成静态html网页 */ public class ToHtml extends HttpServlet { public void service(HttpServletRequ ...

  3. error: command 'gcc' failed with exit status 1 while installing eventlet

    Ubuntu安装Python包出错解决办法 : sudo apt-get install python-dev sudo apt-get install libevent-dev

  4. 【BIEE】安装好BIEE后,修改默认登录页面不为QuickStart页面

    已经安装好了BIEE,但是发布了自己的资料库后,默认的登录页面为QuickStart,导致已登录就看到错误页面 现在进行如下修改即可 点击登录身份后的名字,例如我的是weblogic 选择[我的账户] ...

  5. (二)《Spring实战》——Spring核心

    第二章:装配Bean 在Spring中,对象无需自己查找或创建与其所关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.例如,一个订单管理组件需要信用卡认证组件,但它不需要自己创建信用 ...

  6. Ubuntu开机自动禁用无线网络

    让ubuntu开机自动禁用无线网络. 1.自启动脚本 将下面这条禁用无线网络的命令添加到“启动应用程序“中,这样开机时无线网络就会被自动禁用. dbus-send --system --type=me ...

  7. Prototype的深度探索

    http://www.cnblogs.com/meil/archive/2007/06/06/773645.html 1 什么是prototype JavaScript中对象的prototype属性, ...

  8. Linux命令-文件处理命令:touch

    touch chengshi.list 在当前目录中创建chengshi.list文件 touch /root/chengshi.list 在root目录下面创建chengshi.list文件 tou ...

  9. Python的ipython的安装

    IPython是Python 的原生交互式 shell 的增强版,可以完成许多不同寻常的任务,比如帮助实现并行化计算:主要使用它提供的交互性帮助,比如代码着色.改进了的命令行回调.制表符完成.宏功能以 ...

  10. C++ vector 和 map的删除

    1.连续内存序列容器(vector,string,deque) 序列容器的erase方法返回值是指向紧接在被删除元素之后的元素的有效迭代器,可以根据这个返回值来安全删除元素. vector<in ...