码迷,mamicode.com
首页 > 其他好文 > 详细

修改ActiveReports验证文字“给不能为 null 的参数指定一个 null 值”

时间:2014-09-12 11:47:13      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   os   ar   strong   for   文件   


目前问题:
bubuko.com,布布扣

运行结果:
bubuko.com,布布扣

CODE 为王,直接奉上。
  1.       $(document).ajaxSend(function (e, xhr, o) {
  2.           // 截获RunReport请求
  3.           if (o.url.indexOf(‘/ActiveReports.ReportService.asmx/RunReport‘) > 0) {
  4.               xhr.abort(); // 终止AR默认请求
  5.               $.ajax({
  6.                   type: "POST",
  7.                   url: o.url,
  8.                   global: false, // 这句很重要不再触发ajaxSend事件,不然会走死循环
  9.                   data: o.data,
  10.                   contentType: "application/json; charset=utf-8",
  11.                   dataType: "json",
  12.                   success: function (msg) {
  13.                       var msgStr = JSON.stringify(msg);
  14.                       msgStr = msgStr.replace(/给不能为 null 的参数指定一个 null 值/g, ‘此字段为必填项‘);
  15.                       msg = JSON.parse(msgStr);
  16.                       o.success(msg);
  17.                   },
  18.                   error: o.error
  19.               });
  20.           }
  21.       });
复制代码
代码的意图很简单:
目前存在的问题就是“给不能为 null 的参数指定一个 null 值”的输出来自后台服务,后台服务不可篡改;

bubuko.com,布布扣
要篡改文字只能通过前台操作(后台没有提供多语言资源文件,官方已确认我的另外一篇发帖

前端解决的原理:

捕获Ajax请求-->终止默认请求-->手动调用Ajax-->篡改返回结果-->调用默认回调函数

解决思路:
1.分析AR生成JS代码
2.分析Jquery类库源码(最开始设想用AjaxComplete事件直接修改返回JSON,后面发现AjaxComplete事件在success调用之后,所以就算修改了也没意义,这也可能是Jquery就是防止这种恶意行为 )


这里不知道是不是AR另外一个BUG,原则上通过分析如果后台“ExtendedErrorInfo”不返回数据,则会走默认的验证字符串(默认验证AR可以修改)
bubuko.com,布布扣

修改为一个人性化的文字,没想到这么波折,希望AR产品组的人员再接再厉,希望后来者可以利用上;
 
 
转:http://gcdn.gcpowertools.com.cn/showtopic-13759.html

修改ActiveReports验证文字“给不能为 null 的参数指定一个 null 值”

标签:style   blog   http   io   os   ar   strong   for   文件   

原文地址:http://www.cnblogs.com/yizhuqing/p/3967978.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!