| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1109 人关注过本帖
标题:javascript调用webservice
取消只看楼主 加入收藏
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
结帖率:98.25%
收藏
已结贴  问题点数:20 回复次数:3 
javascript调用webservice
javascript调用webservice
我找了很多资料,但是总弄不懂应该怎么做,谁有简单易懂的并且好用的东西,谢谢了
我找的资料如下
搜索更多相关主题的帖子: webservice javascript 
2010-06-29 17:55
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:0 
var WSDLS = {};   
   
var WebService = new Class({   
   
    url : '',   
    method : '',   
    options:   
    {   
        method:'GET',   
        data: null,   
        update: null,   
        onComplete: Class.empty,   
        onError:Class.empty,   
        evalScripts: false,   
        evalResponse: false   
    },   
      
    initialize: function(url,method,options)   
    {         
        this.url = url;   
        this.method = method;   
        this.options = options;   
    },   
      
    request : function()   
    {   
        var wsdl = WSDLS[this.url];   
        if(!wsdl)   
        {   
            var op = {method:'GET',async: false};   
            var wsdlAjax = new XHR(op).send(this.url + "?wsdl", null);            
            wsdl = wsdlAjax.transport.responseXML;   
            WSDLS[this.url] = wsdl;   
        }   
   
        this.setSoap(wsdl);   
    },   
           
    setSoap : function(wsdl)   
    {   
        var paraXML = this.getParaXML(wsdl);   
        alert(paraXML);   
        var ns = (wsdl.documentElement.attributes["targetNamespace"] + "" == "undefined") ? wsdl.documentElement.attributes.getNamedItem("targetNamespace").nodeValue : wsdl.documentElement.attributes["targetNamespace"].value;   
        var sr =   
                "" +   
                " +   
                "xmlns:xsi=\"http://www.\" " +   
                "xmlns:xsd=\"http://www.\" " +   
                "xmlns:soap=\"http://schemas.\">" +   
                "<soap:body>"</soap:body> +   
                "<" + this.method + " xmlns=\"" + ns + "\">" +   
                    paraXML +   
                " + this.method + ">";   
           
        this.options.method = 'post';   
        this.options.data = null;   
           
        var soapaction = ((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns) + this.method;   
   
        var soapAjax = new Ajax(this.url,this.options);   
        soapAjax.setHeader("SOAPAction", soapaction);   
        soapAjax.setHeader("Content-type", "text/xml; charset=utf-8");   
        soapAjax.request(sr);   
    },   
    getParaXML : function(wsdl)   
    {   
           
        var objNode = null;   
        var rtnValue = "";   
        //java(xfire)   
        var ell = this.getElementsByTagName(wsdl,"xsd:element");      
        if(ell.length == 0)   
        {   
            //c#   
            ell = this.getElementsByTagName(wsdl,"s:element");     
        }   
        for(var i = 0; i < ell.length; i++)   
        {   
            if(this.getElementAttrValue(ell[i],"name") == this.method)   
            {   
                objNode = ell[i];   
                break;   
            }   
        }   
   
        if(objNode == null) return rtnValue;   
        //java(xfire)   
        ell = this.getElementsByTagName(objNode,"xsd:element");   
        if(ell.length == 0)   
        {   
            //c#   
            ell = this.getElementsByTagName(objNode,"s:element");   
        }   
        if(ell.length == 0) return rtnValue ;   
           
        var hash = new Hash();   
           
        if(this.options.data != null && this.options.data.clean != "")   
        {   
            hash = this.options.data.split("&").toHash("=");   
        }   
           
        for(var i = 0; i < ell.length; i++)   
        {   
            var paraName = this.getElementAttrValue(ell[i],"name");   
            rtnValue = rtnValue + this.getSingleXML(paraName,hash);   
        }   
           
        return rtnValue;   
    },   
      
    getSingleXML : function (name,hash)   
    {   
        name = name.trim();   
           
        var rtnValue = "";   
        if(hash.hasKey(name))   
        {   
            rtnValue = hash.get(name);   
        }   
        rtnValue = "<" + name + ">" + xmlscc(rtnValue) + " + name + ">"   
        return rtnValue;   
    },   
    getBackData: function(xml)   
    {   
        var rtnValue = "";   
        //java(xfire)   
        var soap = this.getElementsByTagName(xml,"ns1:out");      
        if(soap.length == 0)   
        {   
            //c#   
            soap = this.getElementsByTagName(xml,this.method + "Result");   
        }   
        return soap[0].childNodes[0].nodeValue;        
           
    },   
    getElementsByTagName : function(objNode,tagName)   
    {   
        //tagName 形式如 xsd:element ,写出tag的全称   
   
        var ell;   
        if(this.isIE())   
        {   
            ell = objNode.getElementsByTagName(tagName);      
        }   
        else   
        {   
            if(tagName.contains(":")) tagName = tagName.split(":")[1];   
            ell = objNode.getElementsByTagName(tagName);            
        }   
        return ell;   
    },   
    getElementAttrValue : function(objNode,attrName)   
    {   
        var rtnValue = "";   
           
        if(objNode == null) return rtnValue;   
           
        if(objNode.attributes[attrName] + "" == "undefined")   
        {   
            if(objNode.attributes.getNamedItem(attrName) != null)   
                rtnValue = objNode.attributes.getNamedItem(attrName).nodeValue ;   
               
        }   
        else   
        {   
            if(objNode.attributes[attrName] != null)   
                rtnValue = objNode.attributes[attrName].value;   
        }   
        return rtnValue;   
    },   
    isIE : function()   
    {   
        var isMSIE = /*@cc_on!@*/false;   
        return isMSIE;   
    }   
});   
   
Array.extend({   
      
    toHash : function (splitChar)   
    {   
        var hash = new Hash({});   
        for(var i=0;i<this.length;i++)   
        {   
               
            if(this[i].split(splitChar).length == 1) contrnue;   
   
            var key = this[i].split(splitChar)[0].trim();   
            var value = this[i].split(splitChar)[1].trim();   
               
            hash.set(key, value);   
        }   
           
        return hash;   
    }   
});   
   
function xmlscc(strData)   
{   
   
    strData=strData.replace(/&/g, "&");   
    strData=strData.replace(/>/g, ">");   
    strData=strData.replace(/"<");   
    strData=strData.replace(/"/g, """);
    strData=strData.replace(/'/g, "'");   
    return strData;   
}  

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2010-06-29 17:55
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:0 
    <script type="text/javascript">
      
    var service ;   
    function ajaxRequest()   
    {   
        var url = "http://localhost:88/webservicedemo.asmx";   
           
        //设置webService传入参数   
        //   
        //注意:   
        //   
        //    调用webservice(如例子中的webservicedemo.asmx)   
        //           HelloTo(String name)   针对name参数必须写成name=wqj ,还有更多参数一样写,使用&符号分隔(name=11&age=20&.....),使用名称匹配   
        //           传入的参数数量可以不等于(多于或少于)方法要求的参数   
           
           
        var para = "name=wqj";   
           
        var op = {   
                    data:para,   
                    onComplete: showResponse,   
                    onFailure:showError,   
                    update:'ajaxBack'   
                 };   
   
        service = new WebService(url,"HelloTo",op);   
        service.request();   
        return false;   
    }   
    function showError(obj)   
    {   
        //obj 是一个xmlHttpRequest对象   
        alert("error");   
    }   
    function showResponse(requestText,requestXML)   
    {   
        //requestText 返回的文本   
        //requestXML 返回的XML   
        // service.getBackData 就是取出返回的XML中,实际需要的数据   
        //经过测试兼容 IE,FF   
        alert(service.getBackData(requestXML));   
           
    }   
    </script>

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2010-06-29 17:55
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:0 
我不知道这些代码应该怎么用

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2010-06-29 17:56
快速回复:javascript调用webservice
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025344 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved