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
