AJAX实现异步提交表单

目的 : 不刷新网页完成表单提交和动态验证

方法 : 在表单页点击submit后在当前页使用AJAX提交表单数据,通过一个处理表单文件处理后.在当前页做提交后的操作,
ajax.js

var XMLHttp = {
_objPool: [],

_getInstance: function ()
{
for (var i = 0; i > this._objPool.length; i ++)
{
if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4)
{
return this._objPool[i];
}
}

// IE5中不支持push方法
this._objPool[this._objPool.length] = this._createObj();

return this._objPool[this._objPool.length - 1];
},

_createObj: function ()
{
if (window.XMLHttpRequest)
{
var objXMLHttp = new XMLHttpRequest();

}
else
{
var MSXML = [’MSXML2.XMLHTTP.5.0′, ‘MSXML2.XMLHTTP.4.0′, ‘MSXML2.XMLHTTP.3.0′, ‘MSXML2.XMLHTTP’, ‘Microsoft.XMLHTTP’];
for(var n = 0; n < MSXML.length; n ++)
{
try
{
var objXMLHttp = new ActiveXObject(MSXML[n]);
break;
}
catch(e)
{
}
}
}

// mozilla某些版本没有readyState属性
if (objXMLHttp.readyState == null)
{
objXMLHttp.readyState = 0;

objXMLHttp.addEventListener(”load”, function ()
{
objXMLHttp.readyState = 4;

if (typeof objXMLHttp.onreadystatechange == “function”)
{
objXMLHttp.onreadystatechange();
}
}, false);
}

return objXMLHttp;
},

// 发送请求(方法[post,get], 地址, 数据, 回调函数 , 异步)
sendReq: function (method, url, data, callback , XMLHttpbool)
{
if(!XMLHttpbool) XMLHttpbool = true;
var objXMLHttp = this._getInstance();

with(objXMLHttp)
{
try
{
// 加随机数防止缓存
if (url.indexOf(”?”) > 0)
{
url += “&randnum=” + Math.random();
}
else
{
url += “?randnum=” + Math.random();
}

open(method, url, XMLHttpbool);

// 设定请求编码方式
setRequestHeader(’Content-Type’, ‘application/x-www-form-urlencoded; charset=UTF-8′);
send(data);
onreadystatechange = function ()
{
if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304))
{
callback(objXMLHttp);
}
}
}
catch(e)
{
alert(e);
}
}
},
/*

* form 表单

* url 处理文件名

* func 提交后的处理方法

*/
formSubmit : function(form , url , func){
if(typeof form != ‘object’){
var form = document.getElementById(form);
}
var ele = form.elements;
var post = new Array();

for(var i = 0 ; i<ele.length ; i++ ){
//只考虑了 <input type="text" /> 其它的要加些 if ...
post[i] = ele[i].value;
}
var data = post.join(’&’);
this.sendReq('post' , url , data , func , false);
}
};


form.html


<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>form</title>

<script type="text/javascript" src=''ajax.js"></script>

<script type="text/javascript">

function response(XMLHttp){

eval(XMLHttp.responseText);

}

function ajaxSubmit(form){

var url = 'action.php' ; //处理文件

XMLHttp.formSubmit(form , url , response);

}

</script>

</head>

<body>

<form onsubmit="ajaxSubmit(this);return false;">

<input type='text' name='fieldName' />

<input type='submit' value='Submit' />

</form>

</body>

</html>


action.php

if(isset($_POST['submit'])){
if(正确){
//...........入库.......
echo 'alert("完成"); location="/'';';
exit;
} else{
echo 'alert("出错");';
exit;
}
}else{
//其它....
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值