JavaScript調用webservice

<script language="javascript" type="text/javascript">
    var xmlhttp = new XMLHttpRequest();
    var value=new Array();
    var variable=new Array();
    function handleStateChange() {
        if(xmlhttp.readyState==4) {
            if(xmlhttp.status==200) {
                var textvalue = xmlhttp.responseText;
                var xmlobj = phraseXml(textvalue);
                var jsonString = xmlobj.getElementsByTagName("result")[0].firstChild.nodeValue;
                alert(jsonString);
            } else if(xmlhttp.status==404) {


            }
        } else if(xmlhttp.readyState==0) {
        } else if(xmlhttp.readyState==1) {
        } else if(xmlhttp.readyState==2) {
        } else if(xmlhttp.readyState==3) {
        } else {
        }
    }


    function phraseXml(xmlString)
    {
        var xmlDoc=null;
        //判斷瀏覽器的類型
        //支持IE瀏覽器
        if(!window.DOMParser && window.ActiveXObject){   //window.DOMParser 判斷是否是非ie瀏覽器
            var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
            for (var i=0; i<xmlDomVersions.length; i++) {
                try {
                    xmlDoc = new ActiveXObject(xmlDomVersions[i]);
                    xmlDoc.async = false;
                    xmlDoc.loadXML(xmlString); //loadXML方法載入xml字符串
                    break;
                } catch(e) {
                }
            }
        } else if (window.DOMParser && document.implementation && document.implementation.createDocument) {
            //支持Mozilla瀏覽器
            try{
                /* DOMParser 對象解析 XML 文本並返回一個 XML Document 對象。
                 * 要使用 DOMParser,使用不帶參數的構造函數來實例化它,然後調用其 parseFromString() 方法
                 * parseFromString(text, contentType) 參數text:要解析的 XML 標記 參數contentType文本的內容類型
                 * 可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一個。注意,不支持 "text/html"。
                 */
                domParser = new  DOMParser();
                xmlDoc = domParser.parseFromString(xmlString, 'text/xml');
            } catch(e) {
            }
        } else {
            return null;
        }
        return xmlDoc;
    }
    //Get Request Data's length


    function getlen(str)
    {
        var bytesCount=0;
        for (var i = 0; i < str.length; i++) {
            var c = str.charAt(i);
            if (/^[\u0000-\u00ff]$/.test(c)) {   //匹配雙字節
                bytesCount += 1;
            } else {
                bytesCount += 2;
            }
        }
        return bytesCount;
    }


    function phraseJson(msg)
    {
        var obj = msg; // 以文本方式接收
        var objJson = obj
    }
//Create XMLHttpRequest Object
    function createXMLHttpRequest()
    {
        if (window.ActiveXObject) {
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        } else if (window.XMLHttpRequst) {
            xmlhttp=new XMLHttpRequest();
        }
    }


    function RequestByPost(method,variable,value,url,_Namespace)
    {
        createXMLHttpRequest();
        var data;
        data = '<?xml version="1.0" encoding="utf-8"?>';
        data = data + '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">';
        data = data + '<soap:Body>';
        data = data + '<'+method+' xmlns="'+_Namespace+'">';
        for(var i=0;i<variable.length;i++)
        {
            data = data + '<'+variable[i]+'>'+value[i]+'</'+variable[i]+'>';
        }
        alert(data);
        data = data + '</'+method+'>';
        data = data + '</soap:Body>';
        data = data + '</soap:Envelope>';


        xmlhttp.onreadystatechange=handleStateChange;
        xmlhttp.Open("POST",url, true);
        xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=utf-8");//application/json text/xml
        xmlhttp.SetRequestHeader ("Content-Length",getlen(data));
        xmlhttp.SetRequestHeader ("SOAPAction",_Namespace+method);
        xmlhttp.Send(data);
    }


    function Button1_onclick() {
        RequestByPost("GetTodayData",
                      new Array("equipid","valuetype"),
                      new Array(1,1),
                      "http://localhost:8080/GetTodayData",
                      "urn:scada");
    }
</script>


<html>
    <form>
        <table border="1">
            <tr>
                <td>
                    <input type="button" value="獲取數據" onclick=Button1_onclick()>
                </td>
            </tr>
        </table>
    </form>
</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章