通過jQuery調用ASP.NET的AJAX

傳統上,在ASP.NET頁面中實現AJAX的方法是拖放一個ScriptManager控件,並進行一系列的設置和相關編程。但事實上,這並不是理想的解決方案。使用jQuery來調用ASP.NET後臺的方法來實現AJAX可以節省至少三次的服務器與客戶端之間的通訊連接。

要實現通過jQuery的AJAX來調用ASP.NET後臺的方法並不複雜,可以通過一個簡單的例子來說明。

首先,在ASP.NET項目中添加一個Web服務(asmx)文件,假設命名爲WebService.asmx,可以看到它後臺自動生成以下代碼:

[WebService(Namespace ="http://tempuri.org/")]
[WebServiceBinding(ConformsTo =WsiProfiles.BasicProfile1_1)]
//若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消對下行的註釋。
//[System.Web.Script.Services.ScriptService]
public class WebService :System.Web.Services.WebService {
    public WebService () {
        //如果使用設計的組件,請取消註釋以下行
        //InitializeComponent();
    }
    [WebMethod]
    public string HelloWorld() {
        return "Hello World";
    }
}

可以看到,系統已經爲使用者做了一個Web服務後臺方法的示例,即HelloWorld方法。調用HellowWorld方法不需要任何參數,而調用成功後,就可以獲得一個字符串爲HelloWorld。

接着,需要取消對[System.Web.Script.Services.ScriptService]這行的註釋,使這個Web服務可以被AJAX腳本調用。然後可以通過編寫jQuery代碼調用這個方法:

$.ajax({
 type: "POST",
 url: "WebService.asmx/HelloWorld",
 data: "{}",
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: function(msg) {
    // 在此可以對獲得的響應數據進行操作
 }
});

注意url的值爲Web服務文件的路徑後面需要加上“/”符號和調用的方法名稱。若是這個方法需要有傳入的參數,則可以寫在data值中。比如調用test(string parameter)方法,data值需要設置爲“{parameter:’傳入的值’}”。

使用Firefox運行測試,可以通過Firebug工具的Console控制檯看到頁面從服務器獲得的相應:


可以看到服務器已經將返回的結果自動格式化爲了JSON對象。要輸出這個返回的“Hello World”字符串,只需要在上面編寫的jQuery $.ajax()方法中編寫success方法爲:

function(msg){
   varresult = $.parseJSON(msg);
   alert(msg.d);
}
$.parseJSON()是jQuery框架中用於將字符串轉變爲JSON對象的一個非常有用的函數,也就是說服務器傳回一個’{“d”:”Hello World”}’的字符串,通過這個函數,就可以將它轉化爲Javascript對象{d:”Hello World”},便於讀取和操作。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章