+ -
当前位置:首页 → 问答吧 → 发布一个短小精悍的AJAX通用表单提交类

发布一个短小精悍的AJAX通用表单提交类

时间:2008-07-08

来源:互联网

其实说通用我觉得是谈不上,但我是希望能有更多高手能开发出简单小巧实用的程序来共大家享用,我追求小巧实用,这样岂不是更好.
这些代码是从网络上搜集的一些资料,我经过修改整合,为的是使用起来更加方便,做到像我们这种菜鸟也能容易的上手.
下面是JS代码:
复制内容到剪贴板
代码:
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表单数据
}
用法很简单ajaxpost(url,allid,form_obj)函数中url是要提交的地址,allid是结果要显示的ID名称,form_obj是表单的名称如<form name="haha">中的haha.这个函数会自动搜出指定名称的表中的所有值并组合起来并以POST方式发送请求,我刚写好的时候测试正常,后来测试好像又有点问题,各位来看的同时希望提出整改意见,小弟才疏学浅技不如人很多地方不懂,请大家不要见笑,有好的想法的请直接在后边贴出代码最好了。

[ 本帖最后由 昨夜渡轮 于 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