zoukankan      html  css  js  c++  java
  • Js调用WebServices

    通过xmlhttp+webservice(原始方法)

    原文地址:http://netboy.cnblogs.com/archive/2006/02/18/333260.html

     view plaincopy to clipboardprint?
    using System;  
    using System.Web;  
    using System.Web.Services;  
    using System.Web.Services.Protocols;  
     
    [webservice(namespace = "http://tempuri.org/")]  
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
    public class Service : System.Web.Services.WebService  
    {  
        public Service ()   
        {  
            //uncomment the following line if using designed components   
            //InitializeComponent();   
        }  
     
        [webmethod]  
        public string SayHelloTo(string Name)   
        {  
            return "Hello "+Name;  
        }  

    using System;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;

    [webservice(namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class Service : System.Web.Services.WebService
    {
     public Service ()
     {
      //uncomment the following line if using designed components
      //InitializeComponent();
     }

     [webmethod]
     public string SayHelloTo(string Name)
     {
      return "Hello "+Name;
     }
    }
     

    还是俗了点。:)

    2. js调用webservice+xmlhttp的实现部分。

    view plaincopy to clipboardprint?
    <html> 
        <title>Call webservice with javascript and xmlhttp.</title> 
    <body> 
        <mce:script language="javascript"><!--  
       
     
        //test function with get method.  
        function RequestByGet(data){   
            var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");   
            //Webservice location.  
            var URL="http://localhost:1323/WebSite6/Service.asmx/SayHelloTo?Name=Zach";  
            xmlhttp.Open("GET",URL, false);   
            xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=utf-8");   
            xmlhttp.SetRequestHeader ("SOAPAction","http://tempuri.org/SayHelloTo");   
            xmlhttp.Send(data);   
            var result = xmlhttp.status;   
            //OK  
            if(result==200) {   
                document.write(xmlhttp.responseText);   
            }   
            xmlhttp = null;   
        }   
     
        //test function with post method  
        function RequestByPost(value)  
        {  
            var data;  
            data = '<?xml version="1.0" encoding="utf-8"?>';   
            datadata = 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/">';   
            datadata = data + '<soap:Body>';   
            datadata = data + '<SayHelloTo xmlns="http://tempuri.org/">';   
            datadata = data + '<Name>'+value+'</Name>';   
            datadata = data + '</SayHelloTo>';   
            datadata = data + '</soap:Body>';   
            datadata = data + '</soap:Envelope>';   
     
            var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");   
            var URL="http://localhost:1323/WebSite6/Service.asmx";  
            xmlhttp.Open("POST",URL, false);   
            xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=gb2312");   
            xmlhttp.SetRequestHeader ("SOAPAction","http://tempuri.org/SayHelloTo");   
            xmlhttp.Send(data);   
            document.write( xmlhttp.responseText);   
        }  
     
          
    // --></mce:script> 
     
        <input type="button" value="CallWebserviceByGet" onClick="RequestByGet(null)"> 
        <input type="button" value="CallWebserviceByPost" onClick="RequestByPost('Zach')"> 
    </body> 
    </html> 
    <html>
     <title>Call webservice with javascript and xmlhttp.</title>
    <body>
     <mce:script language="javascript"><!--
     

     //test function with get method.
     function RequestByGet(data){
      var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      //Webservice location.
      var URL="http://localhost:1323/WebSite6/Service.asmx/SayHelloTo?Name=Zach";
      xmlhttp.Open("GET",URL, false);
      xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=utf-8");
      xmlhttp.SetRequestHeader ("SOAPAction","http://tempuri.org/SayHelloTo");
      xmlhttp.Send(data);
      var result = xmlhttp.status;
      //OK
      if(result==200) {
       document.write(xmlhttp.responseText);
      }
      xmlhttp = null;
     }

     //test function with post method
     function RequestByPost(value)
     {
      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 + '<SayHelloTo xmlns="http://tempuri.org/">';
      data = data + '<Name>'+value+'</Name>';
      data = data + '</SayHelloTo>';
      data = data + '</soap:Body>';
      data = data + '</soap:Envelope>';

      var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      var URL="http://localhost:1323/WebSite6/Service.asmx";
      xmlhttp.Open("POST",URL, false);
      xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=gb2312");
      xmlhttp.SetRequestHeader ("SOAPAction","http://tempuri.org/SayHelloTo");
      xmlhttp.Send(data);
      document.write( xmlhttp.responseText);
     }

     
    // --></mce:script>

     <input type="button" value="CallWebserviceByGet" onClick="RequestByGet(null)">
     <input type="button" value="CallWebserviceByPost" onClick="RequestByPost('Zach')">
    </body>
    </html>

    对于使用post方法需要发送的那堆东东可以在webservice的测试页面中找到,自己拼凑加上对应的参数就可以。

    通过style.behavior来实现的方法(比较简单)

    原文地址:http://www.zahui.com/html/4/37953.htm

     view plaincopy to clipboardprint?
    function getfemale()  
    {   
        //第一个参数是webservice的url,后面是名称  
        female.useService("news.asmx?WSDL","news");  
        //设置一个回调函数,service返回结果的时候回调;第一个参数是回调函数的名称,后面的是webservice的参数  
        intCallID=female.news.callService(female_result,"getphoto","female"); //这里有两个参数.....  
    }  
     
    function female_result(result)//回调函数  
    {  
        if(result.error)  
        {  
            female.innerHTML=result.errorDetail.string;  
        }  
        else 
        {  
            female.innerHTML=result.value; //将webservice返回的结果写如div中  
        }  
    }  
    function getfemale()
    {
     //第一个参数是webservice的url,后面是名称
     female.useService("news.asmx?WSDL","news");
     //设置一个回调函数,service返回结果的时候回调;第一个参数是回调函数的名称,后面的是webservice的参数
     intCallID=female.news.callService(female_result,"getphoto","female"); //这里有两个参数.....
    }

    function female_result(result)//回调函数
    {
     if(result.error)
     {
      female.innerHTML=result.errorDetail.string;
     }
     else
     {
      female.innerHTML=result.value; //将webservice返回的结果写如div中
     }
    }  
    页面显示部分: <div id="female" style="BEHAVIOR:url(WebService.htc)"></div>

    ok,这给我们在静态页调用动态的内容提供了一种途径;
    这里如果给getfemale()函数加上定时调用的话,就是一种无刷新更新页面的机制了。
    缺点是webservice会有一定的延迟,即使是本地的webservice也会比静态页面慢很多,初次打开页面会感觉很不协调。

    第二种方法使用了style.代码就简洁多了他使用了css.定义了div的行为.比起第一种方法,就易读多了:)

    style="behavior:url(webservice.htc)"

    前提条件是:

    if you are using Microsoft IE 5 or later, you can use the behavior/HTML-Component "WebService" to access a Web service. The "WebService" behavior communicates with Web services over HTTP using Simple Object Access Protocol (SOAP).

    附注:另一个总结帖子在:http://goody9807.cnblogs.com/archive/2005/08/17/216725.html

    calling WebServices using Javascript

    if you are using Microsoft IE 5 or later, you can use the behavior/HTML-Component "WebService" to access a Web service. The "WebService" behavior communicates with Web services over HTTP using Simple Object Access Protocol (SOAP).

    to use the "WebService" behavior, you must attach it to an element using the STYLE attribute, as follows:

    style="behavior:url(webservice.htc)">

     附上ibm上面有关ajax调用webservice的文章:

     使用 Ajax 调用 SOAP Web 服务,第 1 部分: 构建 Web 服务客户机

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lynnlin1122/archive/2009/02/05/3864713.aspx

  • 相关阅读:
    GPUImage滤镜效果翻译
    c3p0配置
    Android webview Mixed Content无法显示图片解决
    java连接jdbc Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by defa
    Castle DynamicProxy creation出现COMException(0x800703fa)错误的解决方案
    magent实现memcached集群的一个问题
    近期Windows 10 RedStone 2 Insider版本安装进度停留在百分之23、24解决方案
    XPS 15 9530使用Windows10频繁发生Intel HD Graphics 4600驱动奔溃的一种解决方法
    Visual Studio 2015开发Android App启动调试始终无法完成应用部署的解决方案
    Visual Studio 2015中创建C#的Android项目提示"Value cannot be null"的解决方法
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1776109.html
Copyright © 2011-2022 走看看