ajax封装表单,ajax封装函数和表单序列化(示例代码)

本文详细介绍了如何使用AJAX封装函数处理表单数据,并提供了示例代码。作者分享了表单序列化的实践经验,适合前端开发者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介这篇文章主要介绍了ajax封装函数和表单序列化(示例代码)以及相关的经验技巧,文章约3485字,浏览量265,点赞数7,值得推荐!

//表单序列化

function iSerialize(form){

var parts={};

for(var i=0;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

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;

}

//封装ajax

function 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);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值