c#、javascript AJAX、和jquery调用webservice的方法

来源:互联网 发布:重庆八中数据谷中学 编辑:程序博客网 时间:2024/05/19 16:37

            最近学习webservice服务方法的调用,着实查了不少东西,总结一下

            首先写的webservice服务的方法,简略一下,引用经典的hello方法:

            [WebMethod]
            public string hello(string name )             //带有参数,返回字符串          
           {
                return "hello"+name;
           }

            然后就开始调用,我学习的是在aspx网站中调用

            先说一下,写的服务一种是放在aspx网站工程目录下,另一种是在iis中发布,这两种方法调用的区别是在右击工程添加web引用时url不同,后面再说

           1、 首先说c#调用,在aspx.cs代码中

            localhost.service sw=new localhost.service();    //实例化:web引用名.服务名  sw=new  web引用名.服务名

            string str=sw.hello("tom");

            response.write(str);

            就这么简单的几句代码,返回的是方法中的字符串即:hello tom

            2、AJAX的调用        

<script language="javascript" type="text/javascript">
   var oRequest;
   function func()
   {
      oRequest = new ActiveXObject("Microsoft.XMLHTTP");      //ie浏览器直接写的,保险的万能方法自己查
      oRequest.open("POST","
http://本人的ip/Service.asmx/hello",false);   //我是发布到iis了,所以用的是绝对地址,如果是在工程目录下则是相对目录,后面的的hello为调用的方法名。
      oRequest.setRequestHeader ("Content-Type","application/x-www-form-urlencoded");
      oRequest.setRequestHeader ("Content-Length",2); // 2即为参数的个数
      oRequest.onreadystatechange=coor;
      oRequest.send("name="+"小明");
   }
   function coor()
   {
      if (oRequest.readyState==4&&oRequest.status==200)
        {  
            alert(oRequest.responseText);
        }
   }

</script>

  运行返回网页内容
<?xml version="1.0" encoding="utf-8"?>

<string xmlns="http://tempuri.org/">hello 小明</string>

注意啦:请求的地址/hello是方法名,开始我这样写是不对的,运行时请求错误,无权限什么的,有两种方法可以解决

               a:改成"http://本人的ip/Service.asmx"+"/"+"hello"

               b:在System.web 这个节点中添加如下配置即可

  <webServices>
        <protocols>
          <add name="HttpGet"/>
          <add name="HttpPost"/>
        </protocols>
      </webServices>

               如果用第二种方法改,"http://本人的ip/Service.asmx/hello",这样就是对的,但是按ctrl点击仍然会报错,不清楚原因

   3、jQuery调用

      先添加jquery库

然后

<script type="text/javascript" language="javascript" src="jquery-142min.js"></script>
  <script type="text/javascript">
        function func()
        {
              $.ajax({
               type:"POST",
               contentType:"application/json",
               url:"
http://ip/Service.asmx/hello",             //这里跟上面的情况一样
               data:"{name:"tom"}",
               dataType:'json',
               success:function(result)
               {
               alert(result.d);
               }
                     });
         
        }
 </script>

          运行返回的也是纯字符串:hello tom