Asp.net mvc中的Ajax處理

在Asp.net MVC中的使用Ajax, 可使用通用的Jquery提供的ajax方法,也可使用MVC中的AjaxHelper。前端

這篇文章不對具體如何使用作詳細說明,只對於在使用Ajax中的一些須要注意或者容易忽略的細節問題作下總結.ajax

1. 注意ajax請求是同步仍是異步的

默認的Jquery中的Ajax請求是異步的,可是在一些特殊的場景下,咱們須要同步的ajax請求,也能夠說是阻塞式的ajax請求。json

好比在付款或者操做時間過長的ajax請求時,不但願用戶操做時,就要用到同步ajax請求session

在Jquery中使用ajax方法時,將async屬性設置成False, 就是同步的ajax請求了app

$.ajax({
       async: false,
       url: "/test/1",
       success: function (msg) {
                    ......        
                }
      });

2. 加上Loading…等文字或者動畫效果

對於ajax請求,特別對於耗時長的,最好加上loading等效果。異步

3. 使用Post仍是Get

對於ajax請求是使用Get仍是Post, 一個分辨的標準應該是:async

對於數據產生影響的請求,好比刪除操做等,應當使用Post.動畫

其它的應當二者區別不大。url

4. 處理ajax請求異常

沒有人可以保證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
                  },
              };
          }

     }
} 

這個時候前端就能夠根據返回的錯誤信息來作相應的處理

 

以上只是我的的一點總結,不當之處歡迎拍磚.

相關文章
相關標籤/搜索