在Asp.net MVC中的使用Ajax, 可使用通用的Jquery提供的ajax方法,也可使用MVC中的AjaxHelper。前端
這篇文章不對具體如何使用作詳細說明,只對於在使用Ajax中的一些須要注意或者容易忽略的細節問題作下總結.ajax
默認的Jquery中的Ajax請求是異步的,可是在一些特殊的場景下,咱們須要同步的ajax請求,也能夠說是阻塞式的ajax請求。json
好比在付款或者操做時間過長的ajax請求時,不但願用戶操做時,就要用到同步ajax請求session
在Jquery中使用ajax方法時,將async屬性設置成False, 就是同步的ajax請求了app
$.ajax({ async: false, url: "/test/1", success: function (msg) { ...... } });
對於ajax請求,特別對於耗時長的,最好加上loading等效果。異步
對於ajax請求是使用Get仍是Post, 一個分辨的標準應該是:async
對於數據產生影響的請求,好比刪除操做等,應當使用Post.動畫
其它的應當二者區別不大。url
沒有人可以保證ajax的處理過程當中不會有異常。spa
一個最多見的現象是,若是一個頁面時間過長致使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 }, }; } } }
這個時候前端就能夠根據返回的錯誤信息來作相應的處理
以上只是我的的一點總結,不當之處歡迎拍磚.