在Asp.net MVC中的使用Ajax, 可以使用通用的Jquery提供的ajax方法,也可以使用MVC中的AjaxHelper。
這篇文章不對具體如何使用做詳細說明,只對於在使用Ajax中的一些需要注意或者容易忽略的細節問題做下總結.
1. 注意ajax請求是同步還是異步的
默認的Jquery中的Ajax請求是異步的,但是在一些特殊的場景下,我們需要同步的ajax請求,也可以說是阻塞式的ajax請求。
比如在付款或者操作時間過長的ajax請求時,不希望用戶操作時,就要用到同步ajax請求
在Jquery中使用ajax方法時,將async屬性設置成False, 就是同步的ajax請求了
$.ajax({ async: false, url: "/test/1", success: function (msg) { ...... } });
2. 加上Loading…等文字或者動畫效果
對於ajax請求,特別對於耗時長的,最好加上loading等效果。
3. 使用Post還是Get
對於ajax請求是使用Get還是Post, 一個分辨的標准應該是:
對於數據產生影響的請求,比如刪除操作等,應當使用Post.
其它的應當兩者區別不大。
4. 處理ajax請求異常
沒有人能夠保證ajax的處理過程中不會有異常。
一個最常見的現象是,如果一個頁面時間過長導致session過去,用戶點擊觸發ajax請求的時候,就很有可能導致異常。
如果代碼中沒有考慮過如何處理這種異常,就會給用戶造成困擾。
一個解決辦法是添加一個處理異常的Filter,如果是ajax的異常,就返回一個異常json信息
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] public class MyHandleErrorAttribute : FilterAttribute, IExceptionFilter { public void OnException(ExceptionContext filterContext) { //when ajax error happen if (filterContext.HttpContext.Request.IsAjaxRequest()) { filterContext.ExceptionHandled = true; filterContext.Result = new JsonResult { Data = new { Success = false, Message = GetExceptionMessage(filterContext.Exception.Message), Redirect = error_page_url }, }; } } }
這個時候前端就可以根據返回的錯誤信息來做相應的處理
以上只是個人的一點總結,不當之處歡迎拍磚.