在專案開發過程中很多地方都需要前端和後台的資料交互,幾種典型常用的方法如利用控制項的AutopostBack屬性、Button提交表單等等。但這些都是有條件的,AutoPostBack具有即時性但會刷新頁面,Button提交表單不能實現資料互動的即時性。當然說到前台與後台的資料交互更不能漏掉ajax,ajax實現前台與後台資料的異步交互,並且保證即時的、局部刷新。但有些資料不需要非同步交互,例如當交互的資料是下一步執行的條件時,就必須要等到資料前台與後台資料交互完成後才能繼續執行程式。所以對於掌握js與後台資料互動的方法還是很有必要的。
方法一
後台方法:
// 需要識別為WebMethod
[System.Web.Services.WebMethod]
// 請注意,要讓前台呼叫的方法,一定要是public和static的
public static string Say(string name)
{
string result = "Hello:" 名稱;
return result;
}
前台js:
複製程式碼
複製程式碼
複製程式碼
複製程式碼
複製程式碼
複製程式碼複製程式碼
方法二
後台方法:
複製程式碼
複製程式碼
程式碼如下所示
前台; > 程式碼如下:
function Show()
{
var v = "中國";
var s = ''; // 你好!
方法三
後台方法:
代碼如下:
注意,要讓前台呼叫的方法,一定要是public和static的 public static string Say(string name) { string result = "Hello:" name; return result ; } 前台js: 複製代碼程式碼如下:
呼叫頁面後台方法,前面跟方法所需的參數,接著是方法回呼成功時要執行的js函數,最後一個是方法回呼失敗時要執行的js函數
WebSerCustomer.Say("you",function(ress){//ress就是後台方法傳回的數據,Say是webservice WebSerCustomer.axms頁面上的方法
alert(ress)
});
}
//WebSerCustomer.asmx後台webservice類別的頁名
總結 對於方法一和方法三來說,標識System.web.Services.webmethod可以聲明一個方法可以透過客戶端js函數來調用,並且後台方法必須聲明為public和static,正是由於要將方法聲明為static,使得這兩種方法都有局限性,即靜態方法中只允許訪問靜態成員變量。所以要想用這兩種方式呼叫後台方法,後台方法中是不能存取非靜態成員變數的。
對於方法二來說,雖然後台方法沒有任何限制,但是前台調用的時候由於是只讀的,前台向後台傳的參數實際上是不存在的,即從後台中拿不到。所以方法二適合呼叫後台方法經過處理並傳回給客戶端使用,不適合將資料傳到後台供後台使用。