• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    发布三个ajax相关的函数,包括无刷新提交表单等
    POST TIME:2021-10-18 06:26

    几个月前,因为项目需求,我写了下面的三个ajax相关的函数。发布出来和大家分享。
    第一个是用来无刷新加载一段HTML
    第二个是把表单数据转换成一串请求字符串
    第三个是结合函数一和函数二的无刷新提交表单实现。

    还有一点要提到的是,无刷新表单提交,还不能对文件上传进行处理,这个主要是因为浏览器的安全设置。目前无刷新的上传,一般是用iframe来实现的。关于这个,我们在google里搜索能找到很多。

    网上虽然已经有很多优秀的ajax的类和函数了,但是或许我这几个函数对大家还有点用处,于是我就发布出来了。
    可以在这里下载。

    复制代码 代码如下:

    //@desc    load a page(some html) via xmlhttp,and display on a container
    //@param   url          the url of the page will load,such as "index.php"
    //@param   request      request string to be sent,such as "action=1name=surfchen"
    //@param   method       POST or GET
    //@param   container          the container object,the loaded page will display in container.innerHTML
    //@usage 
    //         ajaxLoadPage('index.php','action=1name=surfchen','POST',document.getElementById('my_home'))
    //         suppose there is a html element of "my_home" id,such as "span id='my_home'>/span>" 
    //@author  SurfChen surfchen@gmail.com>
    //@url     http://www.surfchen.org/
    //@license http://www.gnu.org/licenses/gpl.html GPL
    function ajaxLoadPage(url,request,method,container)
    {
        method=method.toUpperCase();
        var loading_msg='Loading...';//the text shows on the container on loading.
        var loader=new XMLHttpRequest;//require Cross-Browser XMLHttpRequest
        if (method=='GET')
        {
            urls=url.split("?");
            if (urls[1]=='' || typeof urls[1]=='undefined')
            {
                url=urls[0]+"?"+request;
            }
            else
            {
                url=urls[0]+"?"+urls[1]+""+request;
            }

            request=null;//for GET method,loader should send NULL
        }
        loader.open(method,url,true);
        if (method=="POST")
        {
            loader.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        }
        loader.onreadystatechange=function(){
            if (loader.readyState==1)
            {
                container.innerHTML=loading_msg;

            }
            if (loader.readyState==4)
            {
                container.innerHTML=loader.responseText;
            }
        }
        loader.send(request);
    }
    //@desc    transform the elements of a form object and their values into request string( such as "action=1name=surfchen")
    //@param   form_obj          the form object
    //@usage   formToRequestString(document.form1)
    //@notice  this function can not be used to upload a file.if there is a file input element,the func will take it as a text input.
    //         as I know,because of the security,in most of the browsers,we can not upload a file via xmlhttp.
    //         a solution is iframe.
    //@author  SurfChen surfchen@gmail.com>
    //@url     http://www.surfchen.org/
    //@license http://www.gnu.org/licenses/gpl.html GPL
    function formToRequestString(form_obj)
    {
        var query_string='';
        var and='';
        //alert(form_obj.length);
        for (i=0;iform_obj.length ;i++ )
        {
            e=form_obj[i];
            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;
    }
    //@desc    no refresh submit(ajax) by using ajaxLoadPage and formToRequestString
    //@param   form_obj          the form object
    //@param   container          the container object,the loaded page will display in container.innerHTML
    //@usage   ajaxFormSubmit(document.form1,document.getElementById('my_home'))
    //@author  SurfChen surfchen@gmail.com>
    //@url     http://www.surfchen.org/
    //@license http://www.gnu.org/licenses/gpl.html GPL
    function ajaxFormSubmit(form_obj,container)
    {
        ajaxLoadPage(form_obj.getAttributeNode("action").value,formToRequestString(form_obj),form_obj.method,container)
    }

    您可能感兴趣的文章:
    • IIS里的AJAX相关的设置
    • jquery $.ajax相关用法分享
    • ajax上传时参数提交不更新等相关问题
    • ajax的 IE cache 相关问题解决
    • js jquery ajax的几种用法总结(及优缺点介绍)
    • 浅谈Ajax相关及其优缺点
    上一篇:AJAX请求类
    下一篇:AJAX初体验之实战篇——打造博客无刷新搜索
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信