AJAX大量数据xml格式提交

AjaxGETPOST的两种提交方法,get主要是少量数据的提交,在这里我谈谈用post方法发送大量数据的过程.

此处我将所有内容打包为一个xml文件流,避免了长参数的发送,在服务器端直接载入xml解析,十分方便,数据也没有丢失现象.

下为过程的实现思路:

第一步:创建一个XMLDOM对象,可用如下方法完成

function CreateDomDoc()   //创建XML文档对象

{

Var signatures = ["Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","Msxml2.DOMDocument.3.0","Msxml2.DOMDocument","Microsoft.XmlDom"];

       for(var i=0;i<signatures.length;i++)

    {

           try

           {

                  var domDoc = new ActiveXObject(signatures[i]);

                  return domDoc;

           }

           catch(e)

           {

           }

    }

    return null;

}

 

第二步:从客户端取得数据写入XM,方法如下:

function CreateXml(doc)

{

var root= doc.createElement("root");

      

       var title= doc.createElement("title");

       title.text= document.getElementById("title").value;

       root.appendChild(title);

       var homepage = doc.createElement("homepage");

       homepage.text= document.getElementById("homepage").value;

       root.appendChild(homepage);

   doc.appendChild(root);

       //alert("ddddd");

       return doc.xml;

}

第三步 互相调用

var domDoc = CreateDomDoc(); //创建对象 将用send发送到服务器端

 if(domDoc!=null)

 {

        var xml = CreateXml(domDoc); //写入xml 返回xml文档

        alert(domDoc);//

 }

 else

 {

        alert("未安装MSXML控件");

 }

第四步 AJAX发送

var xmlhttp=createxmlhttp();

 

        xmlhttp.onreadystatechange = function()

      {

        if(xmlhttp.readyState == 4)

        {

            if(xmlhttp.status == 200)

            {         

                 

                             info =xmlhttp.responseText;

                             //alert(info);

                      }

             else

            {    

               alert("ajax调用失败!"+xmlhttp.status);

            }       

         }   

        }

xmlhttp.open("POST","ajaxserver.aspx?type=add",false);

xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;"); //关键,否则出错

xmlhttp.send(domDoc); //发送一定是domDoc文档对象,如果只发送xml将出错”statue=500”

服务器端:

设置接受类型,防止中文出现乱码情况

Request.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");

XmlDocument xmldoc = new XmlDocument();  //建立xml文档对象

xmldoc.Load(Request.InputStream); //接受ajax发送的xml文档对象流 //也可以接受普通字符流

XmlNode node = xmldoc.SelectSingleNode("//title");  //获得title节点

title = node.InnerText; //取得节点值

部分解释:

xmlhttp.open("POST","ajaxserver.aspx?type=add",false);

open方法至少包含上述三个参数,

post/get :发送类型

ajaxserver.aspx?type=add :请求页面路径

false :   可以是true,当为true是请求异步,发送可以可以继续使用表单,false时发送后锁定表单,直到返回结果.

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值