jquery.form.js修改源码ajax支持json格式参数
2017-04-28 15:05
459 查看
背景
随着RESTFUL格式API的盛行,表单提交jqery的ajax是可以自定义提交的数据格式但是如果使用jquery.form.js则它默认的格式都是使用的param()方式转成了&的字符串,因此对于严格格式要求application/json的参数则无法支持自定义格式,因此动手修改源码如下;
1.实现param2json方法,默认jquery只有param方法
/** * 将param对象转为josn格式 * @param a obj对象 * @param traditional 规定是否使用传统的方式浅层进行序列化(参数序列化)。 * @method param2Json * */ $.param2Json = function(a, traditional) { var prefix, s = {}, add = function(key, value) { //如果value是函数,那么调用函数得到返回值作为真正的value值,如果value是null或者undefined //那么直接value是空字符串,其它情况value不变! // If value is a function, invoke it and return its value value = jQuery.isFunction(value) ? value() : (value == null ? "" : value); //把key和value值都进行了转码调用encodeURIComponent s[key] = value; }; // Set traditional to true for jQuery <= 1.3.2 behavior. if (traditional === undefined) { traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; } // If an array was passed in, assume that it is an array of form elements. if (jQuery.isArray(a) || (a.jquery && !jQuery.isPlainObject(a))) { // Serialize the form elements [{name:"avaue"},{age:1}] jQuery.each(a, function() { //这里面的each指向前面的数组中的内容,也就是是一个对象! add(this.name, this.value); }); } else { s=a; } // Return the resulting serialization //最后把数组s中的所有的查询字符串通过&链接起来,并且把%20也就是空格用+表示! return s; };
为了方便使用,可以把该代码放入common.js中引入页面使用,或者直接放在jquery.form.js源码的倒数第一个}));的上一行作为它的扩展函数使用
2.修改源码
var q;//定义q参数这行开始 //当为json时添加我们自己的转换方式 //when contentType is application/json type the param will be json string if (options.contentType&&options.contentType.indexOf('json')>0) { q = JSON.stringify($.param2Json(a, traditional)); }else{ // change param to a=v&b=v string :param(d,t) is jquery.js methond q = $.param(a, traditional);//原有参数转换方式 } //
3.使用方式
var form = $("form[name=dataForm]"); form.ajaxSubmit({ url:sysMessageTep.basePath, contentType: "application/json; charset=utf-8", //加上 contentType dataType: "json", type:"put", success:function(res){ } });
相关文章推荐
- 修改ajaxfileupload.js 源码 对ie9支持
- jquery.form.js官方插件介绍Form插件,支持Ajax,支持Ajax文件上传
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
- jsp中利用jquery+ajax在前后台之间传递json格式参数
- 企业开发中js,Jquery,Ajax和json格式的一个例子
- jquery.form.js官方插件介绍Form插件,支持Ajax,支持Ajax文件上传
- struts2 + ajax(由前台的form提交数据到后台,再根据form所调用返回获取的后台json格式的数据返回到前端,然后前端用jquery对json数据进行解析)==》》涉及非文件上传的部分
- struts2 + ajax(由前台的form提交数据到后台,再根据form所调用返回获取的后台json格式的数据返回到前端,然后前端用jquery对json数据进行解析)==》》涉及文件上传的部分
- ajaxFileupload.js修复上传无法携带参数,返回json格式不准确问题
- jsp中利用jquery+ajax传递json格式参数与前后台之间
- [js开源组件开发]query组件,获取url参数和form表单json格式
- 修改 jquery.validate.js 支持非form标签
- jQuery.form.js是一个form插件,支持ajax表单提交和ajax文件上传。
- Jquery的validate,清除form方法,显示密插件,正则特殊字符处理,js的call用法,ajax,h5支持情况,elclipse tomcate去掉项目名,js 的原型
- js 参数加密 修改jquery源码
- 使用jquery.form.js的ajaxsubmit方法提交时参数file标签有值报JS错误
- jsp中利用jquery+ajax在前后台之间传递json格式参数
- jsp中利用jquery+ajax传递json格式参数与前后台之间
- Js和Jquery中ajax返回JSON格式的两种方法!(各有示例代码)
- jQuery中使用Ajax获取JSON格式数据