修改ActiveReports驗證文字「給不能爲 null 的參數指定一個 null 值」

 

目前問題:


運行結果:


CODE 爲王,直接奉上。
          $(document).ajaxSend(function (e, xhr, o) {
              // 截獲RunReport請求
              if (o.url.indexOf('/ActiveReports.ReportService.asmx/RunReport') > 0) {
                  xhr.abort(); // 終止AR默認請求
                  $.ajax({
                      type: "POST",
                      url: o.url,
                      global: false, // 這句很重要再也不觸發ajaxSend事件,否則會走死循環
                      data: o.data,
                      contentType: "application/json; charset=utf-8",
                      dataType: "json",
                      success: function (msg) {
                          var msgStr = JSON.stringify(msg);
                          msgStr = msgStr.replace(/給不能爲 null 的參數指定一個 null 值/g, '此字段爲必填項');
                          msg = JSON.parse(msgStr);
                          o.success(msg);
                      },
                      error: o.error
                  });
              }
          });

 

代碼的意圖很簡單:
目前存在的問題就是「給不能爲 null 的參數指定一個 null 值」的輸出來自後臺服務,後臺服務不可篡改;


要篡改文字只能經過前臺操做

前端解決的原理:

捕獲Ajax請求-->終止默認請求-->手動調用Ajax-->篡改返回結果-->調用默認回調函數

解決思路:
1.分析AR生成JS代碼
2.分析Jquery類庫源碼(最開始設想用AjaxComplete事件直接修改返回JSON,後面發現AjaxComplete事件在success調用以後,因此就算修改了也沒意義,這也多是Jquery就是防止這種惡意行爲 )


原則上經過分析若是後臺「ExtendedErrorInfo」不返回數據,則會走默認的驗證字符串(默認驗證AR能夠修改)
修改成一我的性化的文字,沒想到這麼波折,但願AR產品組的人員再接再礪,但願後來者能夠利用上;
相關文章
相關標籤/搜索