Asp.net mvc中的Ajax處理


在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
                  },
              };
          }

     }
} 

這個時候前端就可以根據返回的錯誤信息來做相應的處理

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM