ajax封装函数和表单序列化

//表单序列化function iSerialize(form){   var parts={};   for(var i=0;i<form.elements.length;i++){      var filed=form.elements[i];      switch(filed.type){         case undefined:         case "submit":         case "reset":         case "file":         case "button":            break;         case "radio":         case "checkbox":            if(!filed.selected) break;         case "select-one":         case "select-multiple":         for(var j=0;j<filed.options.length;j++){            var option=filed.options[j];            if(option.selected){               var optValue="";               if(option.hasAttribute){                  optValue=(option.hasAttribute("value")?option.value:option.text);                 }else{                  optValue=(option.attributes("value").specified?option.value:option.text);                 }               parts[filed.name]=optValue;            }         }         break;         default:            parts[filed.name]=filed.value;      }   }   return parts;}

//封装ajaxfunction iAjax(obj) {   var xhr = (function () {      if (typeof XMLHttpRequest != ‘undefined‘) {         return new XMLHttpRequest();      } else if (typeof ActiveXObject != ‘undefined‘) {         var version = [                              ‘MSXML2.XMLHttp.6.0‘,                              ‘MSXML2.XMLHttp.3.0‘,                              ‘MSXML2.XMLHttp‘         ];         for (var i = 0; version.length; i ++) {            try {               return new ActiveXObject(version[i]);            } catch (e) {               //跳过            }           }      } else {         throw new Error(‘您的系统或浏览器不支持XHR对象!‘);      }   })();   obj.url = obj.url + ‘?rand=‘ + Math.random();   obj.data = (function (data) {      var arr = [];      for (var i in data) {         arr.push(encodeURIComponent(i) + ‘=‘ + encodeURIComponent(data[i]));      }      return arr.join(‘&‘);   })(obj.data);   if (obj.method === ‘get‘) obj.url += obj.url.indexOf(‘?‘) == -1 ? ‘?‘ + obj.data : ‘&‘ + obj.data;   if (obj.async === true) {      xhr.onreadystatechange = function () {         if (xhr.readyState == 4) {            callback();         }      };   }   xhr.open(obj.method, obj.url, obj.async);   if (obj.method === ‘post‘) {      xhr.setRequestHeader(‘Content-Type‘, ‘application/x-www-form-urlencoded‘);      xhr.send(obj.data);       } else {      xhr.send(null);   }   if (obj.async === false) {      callback();   }   function callback() {      if (xhr.status == 200) {         obj.success(xhr.responseText);       //回调传递参数      } else {         alert(‘获取数据错误!错误代号:‘ + xhr.status + ‘,错误信息:‘ + xhr.statusText);      }     }}

原文地址:https://www.cnblogs.com/wxiang/p/9083165.html

时间: 2024-11-08 13:59:32

ajax封装函数和表单序列化的相关文章

$.ajax、$.post、from表单序列化工具

$.ajax\$.post <script type="text/javascript" language="javascript" src="js/jquery-1.8.3.js" ></script> <script type="text/javascript"> //使用Ajax($.ajax)调用 function ajax(){ $.ajax({ type:"post&q

待整理笔记(表单序列化操作、多态函数、对象的状态队列管理模式)

1.jquery的表单序列化操作 $('.form').serializeArray();通过serializeArray()方法得到表单form(class=“form”)的dom结点下所有含有name值的节点的value值的一个数组; 这个数组由多个对象构成,每个对象有name和value两个key值. 2.编程的多态性思想 利用函数的参数数组arguments,通过判断数组的长度来选择性执行某个功能: 例如: store: function(namespace, data, remove)

ajax提交表单序列化(serialize())数据

知识点: $("#form").serialize();将表单数据序列化为标准URL编码文本字符串(key1=value1&key2=value2…). 以下用一个例子来演示ajax提交表单序列化数据. 表单内容: <form id="f1"> <label for="realname" >姓名:</label><input type="text" name="rea

原生js实现form表单序列化

大家都知道在jquery中有相应的表单序列化的方法: 1.serialize()方法 格式:var data = $("form").serialize(); 功能:将表单内容序列化成一个字符串. 这样在ajax提交表单数据时,就不用一一列举出每一个参数.只需将data参数设置为 $("form").serialize() 即可. 2.serializeArray()方法 格式:var jsonData = $("form").serialize

JavaScript之Ajax-6 Ajax的增强操作(jQuery对Ajax的支持、表单操作)

一.jQuery对Ajax的支持 load() - 作用: 将服务器返回的数据字节添加到符合要求的节点之上 - 用法: $obj.load(请求地址,请求参数) - 请求参数 - "username=tom&age=22" - {'username':'tom','age':22} - 有请求参数时,load方法发送POST请求,否则发送GET请求 get() - 作用: 发送GET类型的请求 - 用法: $.get(请求地址,请求参数,回调函数,服务器返回的数据类型) - 说

JavaScript表单序列化的方法详解

本文介绍下,在javascript中实现表单序列化的方法,通过实例加深理解,有需要的朋友参考下吧. 在JavaScript中,可以利用表单字段的type属性,连同name和value属性一起实现对表单的序列. 首先,我们来了解下在表单提交期间,浏览器是怎样将数据发送给服务器的.对表单字段的名称和值进行URL编码,使用和号(&)分割.不发送禁用的表单字段.只发送勾选的复选框和单选按钮.不发送type为"reset"和"button"的按钮.多选择框中的每个选中

表单序列化-可以简化表单提交数据

提交表单的时候,可以用表单序列化的方式,就不用找到每个要提交的id逐个提交! <form id="loginInputForm" method="post"> <table> <tr> <th align="right">用户名</th><td><input name="name"/></td> </tr> <tr

将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对&lt;name&amp;value&gt;格式和JSON格式。

http://zhengxinlong.iteye.com/blog/848712 将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name&value>格式和JSON格式. /// <reference name="jquery.js" description="1.3.2版本以上" /> /*!* 扩展jQuery表单序列化函数:{ Version: 1.2, Author: Eric

jquery将form表单序列化常json

var formData = {};$.each(form.serializeArray(),function(i, item){ formData[item.name] = item.value;}); $.ajax({ cache: true, type: "POST", url:ajaxCallUrl, data:$('#yourformid').serialize(),// 你的formid async: false, error: function(request) { al