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

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

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

 

內容更新:因爲ajax局部更新的特性,單純後臺頁面跳轉沒法實現,可是每一個ajax都去判斷也不現實,參考網友的方案,經過ajax的ajaxSetup重定義ajax的complete(請求完成時調用),ajax

完整jsjson

新建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 });

後臺代碼post

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

 

由於後臺對返回json格式進行過打包,因此當須要頁面跳轉時給Message屬性賦值Redirect,給Data屬性賦值url,而後正常操做ajax便可。url

相關文章
相關標籤/搜索