版本:
  1. jQuery EasyUI 1.4.3
  2. springmvc 3.2.6
  3. 谷歌浏览器,内核版本 chrome 56.0.2924.87
  4. 360急速浏览器,内核版本 chrome 50.0.2661.102
    查看版本方式:http://chrome.360.cn/test/core/

场景:
  1. easyui 使用如下:

    1
    2
    3
    4
    5
    6
    $(datagrid.dilogFormID).form('submit', {
        url: datagrid.submitUrl,
        iframe:false,
        onSubmit: function(param){},
        error:function(result){},
        success: function(res){...}
  2. spingmvc code:
    1
    2
    3
    4
    5
    6
    @RequestMapping(value="/saveOrUpdateParkAdditional.do")
    @ResponseBody
    public String saveOrUpdateParkAdditional(HttpServletRequest request) {
        return "itemTypeError";
    }
  3. 先用谷歌浏览器提交from,返回响应:响应结果是正确的

    但是,当我调试js查看success回调函数 参数时,发现 正确结构后面被追加了:<audio controls="controls" style="display: none;"></audio>
  4. 查看easyui源码,发现几处关键代码:
    1. 这个success回调函数:res 的值是在何处?如何得到到?

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      function cb() {
          var f = $("#" + _507); // $("#" + _507) 何时创建的,什么内容?
          if (!f.length) {
              return;
          }
          f.unbind();
          var data = "";
          try {
              var body = f.contents().find("body");
              data = body.html();

    2. 再跟踪这个 body 的来源:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      (function($) {
      function _503(_504, _505) {
          var opts = $.data(_504, "form").options;
          $.extend(opts, _505 || {});
          var _506 = $.extend({}, opts.queryParams);
          if (opts.onSubmit.call(_504, _506) == false) {
              return;
          }
          $(_504).find(".textbox-text:focus").blur();
          var _507 = "easyui_frame_" + (new Date().getTime());
          var _508 = $("<iframe id=" + _507 + " name=" + _507 + "></iframe>")
                  .appendTo("body");   // here

      原来easyui 添加了个iframe,并将服务端的返回值 塞进 该iframe#body

  5. 那么问题关键点,找到了,就是这个$(...).appendTo("body"),分别在 当前最高版本谷歌(chrome 56.0.2924.87) 和 360急速浏览器(chrome 50.0.2661.102)执行:
    1
    $("<iframe id='t2eewqeqwst' name='tews2st'></iframe>").appendTo('body')

    验证发现:

    1. 谷歌,body 存在 auto 元素

      补加测试:chrome 55 版本也存在 auto 元素
    2. 360急速浏览器,body 元素内是干净的。
  6. 原因找到了,但是至于怎么正面解决还不清楚。
    不过我们可以返回非String来避免,比如:Map<String,String> 类型即可避免。

再补充一个easyui form 导致中文乱码的问题:
   场景如下:
    1. springmvc controller:

      1
      2
      3
      @RequestMapping(value="/saveOrUpdateParkAdditional.do")
      @ResponseBody
      public List<Map<String,Object>> saveOrUpdateParkAdditional(HttpServletRequest request) { ....}
      1. 当返回类型 String 时,或者是 List,Map等,内容含有中文是不会导致中文乱码的
      2. 当返回类型!String 时,且情形如下,会出现中文乱码:
        1
        2
        3
        4
        5
        6
            @RequestMapping(value="/saveOrUpdateParkAdditional.do")
            @ResponseBody
            public String saveOrUpdatePark...{
               renturn "中文"
            }
      3. sss

【原创】08. easyui form控件,回调参数存在后缀 audio controls="controls" style="display: none;"></audio>的更多相关文章

  1. 前端模板之EasyUI常用控件及参数

    CSS类定义 div easyui-window window窗口样式 属性如下: 1) modal:是否生成模态窗口.true[是] false[否] 2) shadow:是否显示窗口阴影.true ...

  2. [转]easyui常用控件及样式API中文收藏

    [转]easyui常用控件及样式收藏 2013-05-06 23:01 30612人阅读 评论(0) 收藏 举报  分类: java ee(5)  目录(?)[+] CSS类定义: div easyu ...

  3. EasyUI常用控件禁用方法

    EasyUI常用控件禁用方法: 1.validatebox可以用的用法:前两种适用于单个的validatebox; 第三种应用于整个form里面的输入框; <1>.$("#id& ...

  4. C# 跨线程调用form控件技巧及byte[]与string型相互转换

    跨线程调用form控件技巧 private delegate void MethodSocket(object obj);//使用托管 ss = "OK"; this.BeginI ...

  5. 疑似easyui本身bug:easyui时间控件问题,试了几个版本都不行

    最近发现easyui时间控件的值格式不支持带斜杠的日期(2016/10/31),必须是2016-10-31这类的才能正常使用,否则默认初始化为当前时间 <input id="Retur ...

  6. 《zw版·Halcon-delphi系列原创教程》halconxlib控件列表

    <zw版·Halcon-delphi系列原创教程>halconxlib控件列表 Halcon v11.01版,com控件,安装后,共有75个控件,      不过最重要的控件,只有两个,T ...

  7. 在WPF中添加Windows Form控件(包括 ocx控件)

      首先,需要向项目中的reference添加两个dll,一个是.NET库中的System.Windows.Forms,另外一个是WindowsFormsIntegration,它的位置一般是在C:\ ...

  8. Jquery获取EasyUI时间控件的值

    jquery easyui日期控件中,在页面里用JS拿到设置的日期值的方法 jquery easyui 日期框 有这样的一个日期文本框: <input type=" value=&qu ...

  9. easyui时间控件用js实时获取选定的时间的取法

    easyui时间控件用js实时获取选定的时间的取法var   datetime=$("#id").datetimebox("getValue");不能用 $(& ...

随机推荐

  1. 微信支付生成带logo的二维码

    利用到一个qrcode类 比较简洁 原作者没有加入二维码嵌入logo的功能 在这里我进行了小小的修改 可以实现生成微信支付二维码时打上logo 生成png格式的利用到该类中的png方法(我已经改好了) ...

  2. 用Nodejs做一个简单的小爬虫

    Nodejs将JavaScript语言带到了服务器端,作为js主力用户的前端们,因此获得了服务器端的开发能力,但除了用express搭建一个博客外,还有什么好玩的项目可以做呢?不如就做一个网络爬虫吧. ...

  3. 二分图最小路径覆盖--poj2060 Taxi Cab Scheme

    Taxi Cab Scheme 时间限制: 1 Sec  内存限制: 64 MB 题目描述 Running a taxi station is not all that simple. Apart f ...

  4. C#继承的执行顺序

    自己对多态中构造函数.函数重载执行顺序和过程一直有些不理解,经过测试,对其中的运行顺序有了一定的了解,希望对初学者有些帮助. eg1: public class A { public A() { Co ...

  5. Django 模型和数据库 总结

    模型和数据库 模型 首先我们在创建一个model的时候,这个类都是继承自 django.db.models.Model, 各种Model Field类型 AutoField,自动增长的IntegerF ...

  6. 关于MATLAB处理大数据坐标文件2017528

    第一次提交数据 增加了部分特征 3000数据测试中得分99 但是10万数据出现过拟化现象,正确率下降 总结:1.某些特征数据本身波动不大应该考虑放弃 2.一些特征虽然表面觉得差异显而易见,但是数据表达 ...

  7. 简单理解js闭包

    什么是闭包?我们先来看一段代码: function a() { var n = 0; function inc() { n++; console.log(n); } inc(); inc(); } a ...

  8. MaintainableCSS 《可维护性 CSS》 --- 复用篇

    复用 通常,Harry Roberts 所说的 DRY (Don't repeat yourself) 经常被曲解成永远不要重复做通一件事. 但实际上这是不现实的,而且常常导致过分抽象,用太多的精力去 ...

  9. 静态变量和Session

    静态变量: Application级别的,不同客户端访问同一个变量. Session:对于每个访问的客户端是独立的,都有一个唯一的SessionID.也就是说,不同客户端下,都可以有一个Session ...

  10. vijos1011题解

    题目:      顺治喜欢滑雪,这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待太监们来载你.顺治想知道载一个区域中最长的滑坡.区域 ...