发布一个短小精悍的AJAX通用表单提交类
时间:2008-07-08
来源:互联网
其实说通用我觉得是谈不上,但我是希望能有更多高手能开发出简单小巧实用的程序来共大家享用,我追求小巧实用,这样岂不是更好.
这些代码是从网络上搜集的一些资料,我经过修改整合,为的是使用起来更加方便,做到像我们这种菜鸟也能容易的上手.
下面是JS代码:
[ 本帖最后由 昨夜渡轮 于 2008-7-7 20:20 编辑 ]
这些代码是从网络上搜集的一些资料,我经过修改整合,为的是使用起来更加方便,做到像我们这种菜鸟也能容易的上手.
下面是JS代码:
复制内容到剪贴板
//定义AJAX函数
function ajax() {
if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();//mozilla浏览器
}
else if(window.ActiveXObject)
{
try
{
xmlHttp = new ActiveX0bject("Msxml2.XMLHTTP");//IE老版本
}
catch(e)
{}
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE新版本
}
catch(e)
{}
if(!xmlHttp)
{
window.alert("不能创建XMLHttpRequest对象实例");
return false;
}
}
}
//GET方式
function ajaxget(url,allid) {
ajax();//调用ajax函数
xmlHttp.onreadystatechange = function(){
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
document.getElementById(allid).innerHTML = xmlHttp.responseText;
} else {
document.getElementById(allid).innerHTML = "请求失败!";
}
}
}
xmlHttp.open('GET', url, true);
xmlHttp.send(null);
}
//POST方式带数据
function ajaxpost(url,allid,form_obj) {
//获取指定表单名当中所有值
var theform = function(){
var query_string='';
var and='';
//alert(form_obj.length);
for (i=0;i<form_obj.length ;i++ )
{
e=form_obj;
if (e.name!='')
{
if (e.type=='select-one')
{
element_value=e.options[e.selectedIndex].value;
}
else if (e.type=='checkbox' || e.type=='radio')
{
if (e.checked==false)
{
break;
}
element_value=e.value;
}
else
{
element_value=e.value;
}
query_string+=and+e.name+'='+element_value.replace(/\&/g,"%26");
and="&"
}
}
return query_string;
}//获取结束
var thispost = theform();//把表单获取的值赋给该变量
ajax();//调用ajax函数
xmlHttp.onreadystatechange = function(){
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
document.getElementById(allid).innerHTML = xmlHttp.responseText;
} else {
document.getElementById(allid).innerHTML = "请求失败!";
}
}
}
xmlHttp.open('POST', url, true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
xmlHttp.send(thispost);//发送thispost表单数据
}
用法很简单ajaxpost(url,allid,form_obj)函数中url是要提交的地址,allid是结果要显示的ID名称,form_obj是表单的名称如<form name="haha">中的haha.这个函数会自动搜出指定名称的表中的所有值并组合起来并以POST方式发送请求,我刚写好的时候测试正常,后来测试好像又有点问题,各位来看的同时希望提出整改意见,小弟才疏学浅技不如人很多地方不懂,请大家不要见笑,有好的想法的请直接在后边贴出代码最好了。代码:
var xmlHttp;//定义AJAX函数
function ajax() {
if(window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();//mozilla浏览器
}
else if(window.ActiveXObject)
{
try
{
xmlHttp = new ActiveX0bject("Msxml2.XMLHTTP");//IE老版本
}
catch(e)
{}
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE新版本
}
catch(e)
{}
if(!xmlHttp)
{
window.alert("不能创建XMLHttpRequest对象实例");
return false;
}
}
}
//GET方式
function ajaxget(url,allid) {
ajax();//调用ajax函数
xmlHttp.onreadystatechange = function(){
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
document.getElementById(allid).innerHTML = xmlHttp.responseText;
} else {
document.getElementById(allid).innerHTML = "请求失败!";
}
}
}
xmlHttp.open('GET', url, true);
xmlHttp.send(null);
}
//POST方式带数据
function ajaxpost(url,allid,form_obj) {
//获取指定表单名当中所有值
var theform = function(){
var query_string='';
var and='';
//alert(form_obj.length);
for (i=0;i<form_obj.length ;i++ )
{
e=form_obj;
if (e.name!='')
{
if (e.type=='select-one')
{
element_value=e.options[e.selectedIndex].value;
}
else if (e.type=='checkbox' || e.type=='radio')
{
if (e.checked==false)
{
break;
}
element_value=e.value;
}
else
{
element_value=e.value;
}
query_string+=and+e.name+'='+element_value.replace(/\&/g,"%26");
and="&"
}
}
return query_string;
}//获取结束
var thispost = theform();//把表单获取的值赋给该变量
ajax();//调用ajax函数
xmlHttp.onreadystatechange = function(){
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
document.getElementById(allid).innerHTML = xmlHttp.responseText;
} else {
document.getElementById(allid).innerHTML = "请求失败!";
}
}
}
xmlHttp.open('POST', url, true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
xmlHttp.send(thispost);//发送thispost表单数据
}
[ 本帖最后由 昨夜渡轮 于 2008-7-7 20:20 编辑 ]
作者: 昨夜渡轮 发布时间: 2008-07-07
学习学习一下先,我的个人站还未用过AJAX呢,我要努力!看看能不能套上楼主的AJAX
作者: forweike 发布时间: 2008-07-07
用jquery就可以了
作者: neuron 发布时间: 2008-07-10
用prototype就可以了
作者: ytcheng 发布时间: 2008-07-11
如果要发送:表单的所有项,再加上表单外其它的一些数据。。。。。
作者: hc.beta 发布时间: 2008-07-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28