Javascript调用WebService
在项目中添加WebService.asmx文件,然后就可以写方法了,上代码:
第一步:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Services; 6 7 /// <summary> 8 ///WebService 的摘要说明 9 /// </summary> 10 [WebService(Namespace = "http://tempuri.org/")] 11 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 12 //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 13 [System.Web.Script.Services.ScriptService] 14 public class WebService : System.Web.Services.WebService 15 { 16 17 public WebService() 18 { 19 20 //如果使用设计的组件,请取消注释以下行 21 //InitializeComponent(); 22 } 23 24 [WebMethod] 25 public string HelloWorld() 26 { 27 return "Hello World"; 28 } 29 [WebMethod] 30 public string HelloWorld(string message) 31 { 32 return message; 33 } 34 35 }
第二步:在这里我尝试了在不同的模式中用,首先在普通的webForm页面中用:
<asp:ScriptManager ID="ScriptManager" runat="server"> <Services> <asp:ServiceReference Path="~/WebService/WebService.asmx"/> </Services> </asp:ScriptManager>
将此段代码加到页面中,这样我们在JS里面就可以调用webservice中的函数
1 <script type="text/javascript"> 2 function GetString() 3 { 4 JsWebService.GetString(GetStringCallBack); //在WebService中调用方法,并设置回调函数 5 } 6 function GetStringCallBack(result) 7 { 8 alert(result); 9 } 10 11 function GetStringParam(name) { 12 JsWebService.GetString(name,GetStringParamCallBack); //在WebService中调用方法,并设置回调函数,如果此方法中带有参数则在回调函数前加入此参数。 13 } 14 function GetStringParamCallBack(result) 15 { 16 alert(result); 17 } 18 19 function GetList() 20 { 21 JsWebService.GetList(GetListCallBack); 22 } 23 function GetListCallBack(result) 24 { 25 if(result.length!=0) 26 { 27 for(var i=0;i<result.length;i++) 28 { 29 document.getElementById("contentDivGetList").innerHTML += result[i] + "<br/>"; 30 } 31 } 32 } 33 34 function GetObjectList() 35 { 36 JsWebService.GetObjectList(GetObjectListCallBack); 37 } 38 function GetObjectListCallBack(result) 39 { 40 if(result.length!=0) 41 { 42 for(var i=0;i<result.length;i++) 43 { 44 document.getElementById("contentDivGetObjectList").innerHTML += "姓名:" + result[i].Name + " 年龄:" + result[i].Age + "<br/>"; 45 } 46 } 47 } 48 49 </script>
然后,我在MVC中使用JS调用webservice:在MVC中,不能用ScriptManager控件,这里要用MicrosoftAjax.js,然后引入webservice:
1 <script type="text/javascript"> 2 function success(result) { 3 alert(result); 4 } 5 6 function faild(error) { 7 alert("Error:"+error.get_message()); 8 } 9 10 function pageLoad() { 11 Sys.Net.WebServiceProxy.invoke( 12 "http://www.cnblogs.com/WebService/WebService.asmx", //地址 13 "HelloWorld",//要调用的方法 14 false,//GET or Post 方式 15 {msg:"123"},//参数 16 success,//执行成功时调用的函数 17 faild,//执行失败时调用的函数 18 //回传给客户端的数据 19 3000//超时timeout 20 ); 21 } 22 </script>
注意Sys.Net.WebServiceProxy.invoke()方法是在pageLoad()中调用的方法。这个方法请求一个Web Service。这个invoke()方法接收一下几个参数:
servicePath:WCF或者ASMX Web Service的路径;
methodName:Web方法的名称;
useGet:确定使用Get或者Post(默认Get);
params:一列要传给Web方法的参数;
onSuccess:Web方法成功调用后要执行的Javascript函数;
onFailure:Web方法调用失败后要执行的Javascript函数;
userContext:回传到客户端的数据;
timeout:在Web Service终止前的时间();
更多关于MVC中用ASP.NET AJAX控件http://www.cnblogs.com/manyiString/archive/2012/05/23/js5.html