JS調用webservice


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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM