• 利用FORM表单提交到WEBSERVICE后获得XML文档但不跳转的方法


    ASP.NET的WEBSERVICE可以通过POST方式提交,通常在直接利用这个方式 来进行交互的时候,比较习惯采用AJAX方法提交,然后还可以很方便的处理数据,但是如果我们采用FORM提交,页面会转向到WEBSERVICE返回的XML页。这样明显是不可取的,那么要利用FORM表单提交到WEBSERVICE并获得返回的信息怎么办呢?

    可以利用IFRAME小窗体,FORM提交后,将返回的页面用IFRAME接收,然后又可以通过处理IFRAME的DOCUMENT来处理返回的数据了。

    获得返回信息很简单,关键在于如何处理信息,返回的信息是不可以直接用来当作XML文档处理的,用document.body.innerHTML查看就可以发现,里面是HTML的代码显示所看到的好象是XML页面,而不是真正的XML,所以就没办法直接用DOM处理数据,然后再看document.body.innerText ,其中的字符传已经是标准的XML结构了,就跟我们看到的页面上的一样,但是多了个“-”号或“+”号,还有换行。不过没关系,我们将这些多余的符号去掉,然后用XMLDOM对象LOAD一下就可以创建出一个DOM对象了。

    以下是我的代码部分

     

    //Creat XMLDOM Instance
    function CreateXMLDOM()
    {
     
        //Build a string Array
        var arrSignatures = ["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0",
                             "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument",
                             "Microsoft.XmlDom"];
       
        //Circle the Array until creat the XMLDOM Instence
        for (var i=0; i < arrSignatures.length; i++) {
            try {
           
                var oXmlDom = new ActiveXObject(arrSignatures[i]);
               
                return oXmlDom;
           
            } catch (oError) {
                //on Error ignore
            }
        }             
     
        throw new Error("You system have not MSXML");
     
     
    //Dom Instance load XML format String,and trans to XmlDom Instance
    function CreatStrDom(str,bstr,estr)
    {
     
        var doc=CreateXMLDOM(); //Creat the Null XMLDOM
       
        str = str.split("/r/n").join(""); //delete newline sign and enter sign
       
        str = str.split(" ").join(""); //delete space
       
        str = str.slice(str.indexOf(bstr),str.indexOf(estr)); //intercept a part of the str
       
        str = "<root>"+str+"</root>"; //add the string root node
       
        doc.async=false;    //set async is false
      
        doc.loadXML(str);   //load the string to build to a XMLDOM Instance (if wanna load a XML file,should use Function "load( [file address string] )" but "loadXML( [string] )" )
           
        return doc; //return doc instance
        
    }
    =================================================

    CreateXMLDOM() 用来创建一个空的DOM对象,在后面这个空DOM对象通过loadXML方法将字符串生成成一个XMLDOM实例。里面大部分代码用来判断IE兼容性了,这个很重要。

    CreatStrDom() 大部分代码是将IFRAME的document.body.innerText里的字符串格式成标准的XML的编写格式,然后再用前面创建的XMLDOM对象生成DOM实例。这个方法的参数不是必要的,是因为我的代码需要这么写而已。

    之后的事情就是DOM的操作了。

    这样,通过这样,我们就可以利用FORM表单POST方法处理WEBSERVICE的信息了。

  • 相关阅读:
    Best Time to Buy and Sell Stock III <leetcode>
    Best Time to Buy and Sell Stock <leetcode>
    Search a 2D Matrix <leetcode>
    Minimum Path Sum <leetcode>
    Container With Most Water <leetcode>
    Binary Tree Level Order Traversal II <leetcode>
    Rotate Image <leetcode>
    获取安装的apk应用信息
    判断wifi连接是否可用
    kubectl常用命令汇总
  • 原文地址:https://www.cnblogs.com/ZetaChow/p/2237382.html
Copyright © 2020-2023  润新知