Ajax 請求時后台跳轉 前端頁面不更新踩坑記錄


踩坑環境:前端:Ajax post請求,json類型數據;后端 C#+MVC,前后端正常通信,但是當后台驗證權限不通過時會RedirectToAction跳轉到登錄頁,結果現象是后台正常執行登錄頁的渲染,渲染完成之后前端ajax進入error,頁面不刷新。

經檢查頁面不跳轉是因為后台渲染頁面后以字符串形式返回,被ajax接收,有因為前端設置json格式所以進入error,看來需要后台返回狀態和url,前端js來進行頁面跳轉,但總感覺這樣不太方便,繼續研究一下能否實現后台跳轉,有方案再來更新內容。

 

內容更新:由於ajax局部更新的特性,單純后台頁面跳轉無法實現,但是每個ajax都去判斷也不現實,參考網友的方案,通過ajax的ajaxSetup重定義ajax的complete(請求完成時調用),

完整js

新建jquery.extend.js擴展文件,頁面引用jquery的地方同時引用jquery.extend.js

 1 //添加ajax全局變量
 2 $.ajaxSetup({
 3     //ajax完成時檢查返回數據中是否有頁面跳轉的命令,如果存在則跳轉頁面
 4     complete: function (XMLHttpRequest, textStatus) {
 5         var result = eval('(' + XMLHttpRequest.responseText + ')');
 6         if(result.State=="error"&&result.Message=="Redirect")
 7         {
 8             window.location.href = result.Data + window.location.search;
 9         }
10     }
11 });

后台代碼

1 return Content(Common.Helper.AjaxResult.Result(Common.Helper.AjaxResultType.error, "Redirect",url).ToString());

 

因為后台對返回json格式進行過打包,所以當需要頁面跳轉時給Message屬性賦值Redirect,給Data屬性賦值url,然后正常操作ajax即可。


免責聲明!

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



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