(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. 解决iOS Xcode 模拟器键盘不弹出

    1. 选中模拟器,在屏幕上方的菜单中找到Hardware->Keyboard 2. 直接快捷键shift+command+k

  2. 学习使用Jmeter做压力測试(一)--压力測试基本概念

    一.性能測试的概念         性能測试是通过自己主动化的測试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行測试.负载測试和压力測试都属于性能測试,两者能够结合进行. 通过负载測试, ...

  3. Java之字节码(2) - .class文件格式详解

    转载来自 小介:去 年在读<深入解析JVM>的时候写的,记得当时还想着用自己的代码解析字节码的,最后只完成了一部分.现在都不知道还有没有保留着,貌似Apache有现 成的BCEL工程可以做 ...

  4. ACE中TASK架构简介及简单应用

    一.基础功能介绍 1.ACE_Message_Block*,Windows消息用MSG结构表示,ACE_Task中因为不能预计各种应用中消息的类型,所以ACE_Message_Block基本上可以理解 ...

  5. Android Bluetooth模块学习笔记

    一.蓝牙基础知识 1.蓝牙( Bluetooth )是一种无线技术标准,可实现固定设备.移动设备和楼宇个人域网之间的短距离数据交换.蓝牙基于设备低成本的收发器芯片,传输距离近.低功耗. 2.微波频段: ...

  6. ajax 缓存问题及解决方案

      ajax 缓存问题及解决方案 CreationTime--2018年7月25日16点04分 Author:Marydon 1.什么情况下ajax请求会出现缓存? 当请求的路径.参数名.参数值三者都 ...

  7. HttpClient + PATCH support

    From - http://compiledexperience.com/blog/posts/patch-support-in-httpclient/ public static class Htt ...

  8. 转:教会你如何编写makefile文件

    最近一直在学习makefile是如何编写的.当我们写的程序文件比较少的时候,敲入gcc /g++,当你在大型工程中,在一个个编译文件的话,你可能就会很郁闷.linux有一个自带的make命令,它让你的 ...

  9. Android Studio集成SVN报错:can&#39;t use subversion command line client : svn

    Android Studio集成SVN插件,check out出代码后.每次开启都会在右上角出现例如以下错误: Can't use Subversion command line client: sv ...

  10. 【算法剖析】寻找两个已序数组中的第k大元素

    1.问题描述 给定两个数组A与B,其大小分别为m.n,假定它们都是已按照增序排序的数组,我们用尽可能快的方法去求两个数组合并后第k大的元素,其中,1\le k\le(m+n).例如,对于数组A=[1, ...