我對使用ajax調用使用scriptmanager的好處或使用JQuery來指導調用webmethods有點困惑。什麼是scriptmanager優於直接jQuery Ajax調用?
有人可以給我一些關於這個問題的提示嗎?何時使用哪個?處理JSON有什麼不同?
我對使用ajax調用使用scriptmanager的好處或使用JQuery來指導調用webmethods有點困惑。什麼是scriptmanager優於直接jQuery Ajax調用?
有人可以給我一些關於這個問題的提示嗎?何時使用哪個?處理JSON有什麼不同?
我覺得MSDN ScriptManager control page做總結特點的一個很好的工作 -
註冊腳本,與部分頁更新兼容。
爲了管理依賴你的腳本和核心 庫,您註冊 是在Microsoft AJAX庫 腳本之後加載的任何腳本之間 。
指定是否向瀏覽器發送釋放或調試腳本。
通過使用ScriptManager 控件註冊Web 服務,從腳本提供對Web服務方法的訪問。
提供訪問ASP.NET驗證,角色,並通過與ScriptManager控件註冊這些服務 配置文件從客戶端腳本 應用 服務。
啓用ECMAScript(JavaScript)的文化特定顯示日期, 瀏覽器中的數字和字符串函數。
訪問本地化資源嵌入的腳本文件或通過使用 的ScriptReference控制的 ResourceUICultures財產 獨立腳本文件。
實現了IExtenderControl或與 ScriptManager控件,以便由客戶端組件和 行爲要求腳本 呈現 IScriptControl接口註冊服務器控件。
本質上的ScriptManager做什麼它說,沒有與編寫JavaScript的「膠水」自己做你的一部分太多關注管理腳本。
當然,包含ScriptManager控件的開銷(有些可能是重要的),至少是爲腳本資源提供的額外請求量以及生成的代理類調用Web服務和頁面方法的大小。當開發一個內聯網應用程序時,與開發互聯網應用程序相比,帶寬和網絡速度可能不太成問題,但這一點可能並不那麼重要,但重要的是要注意。
如果您對能夠替換ScriptManager所有功能的JavaScript庫感到滿意,同時重量更輕,並且可以快速完成任務,那麼這聽起來像是不使用ScriptManager的好例子。
就處理JSON而言,jQuery和ScriptManager都可以很好地處理它。 IIRC,JSON是.NET中頁面方法和Web服務的默認數據類型(儘管有些事情提醒我並非總是如此)。
WRT Ajax調用?很少。 非常少。有幾個可能利益ASP.NET AJAX框架jQuery的上方:
語法。該框架允許你讓你的web服務調用看起來像你真的是調用一些地方的方法,並把它的參數:
MyNamespace.MyWebservice.MyMethod('arg1value', 'arg2value', onResult);
注意如何構架版本知道參數的Web服務方法的順序。
jQuery的.ajax
需要設置管道以調用ASP.NET AJAX Web服務方法。這是關於fairly最小和博客。 well:
$.ajax({
type: "GET",
url: "MyWebservice.asmx/MyMethod",
data: '{"arg1":"arg1value","arg2":"arg2value"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
onResult(data.d) // ASP.NET returns payload in `".d"` property
}
});
JSON序列化爲傳遞參數傳遞給Web服務:ASP.NET AJAX框架具有Sys.Serialization.JavaScriptSerializer.serialize
這確實序列化的Web服務參數「幕後」的工作。只有jQuery可能需要包含第三個庫,例如json.org的JSON.stringify
。這是如此可以忽略不計。
硬編碼GET和POST請求類型。由於框架爲您生成了一個來自WebService類定義的JavaScript客戶端代理,因此您通常不知道(或關心)客戶端中的HTTP請求方法。您只需將其設置在Web Service類的ScriptMethod
屬性中,然後從客戶端調用它。使用jQuery,您必須知道它,才能將它作爲type
選項傳遞給.ajax
。
至於好處WRT非Ajax的東西,@Russ凸輪總結起來已經爲雅。
我沒有比較所有ASP.NET AJAX框架jQuery的,但你的答案是有幫助的,感謝 – 2009-12-02 23:35:01
@Amr:我做不把整個框架與jQuery進行比較。只是AJAX的一部分。 – 2009-12-03 02:16:41
@新月新鮮:是的,我非常感謝你。 – 2009-12-03 09:32:23