【问题标题】:jqGrid autoencode does not work with add/edit popupjqGrid 自动编码不适用于添加/编辑弹出窗口
【发布时间】:2017-01-26 00:20:36
【问题描述】:

我有一个带有添加/编辑功能的 jqGrid。为了防止跨站点脚本,我使用自动编码功能。我查看了在 beforeSubmit 和 afterSubmit 方法中传递的数据,我发现编码工作得很好。但是当我通过单击保存关闭弹出窗口时,脚本仍然会执行。 afterComplete 方法显示我输入的脚本没有任何编码。

该行为也可以在演示页面中复制http://trirand.com/blog/jqgrid/jqgrid.html(实时数据操作 -> 添加/编辑行)

如果我遗漏了一些明显的事情,或者是否有其他方法可以防止这种情况发生,请告诉我

【问题讨论】:

  • 找到解决方案,以防其他人遇到此问题 不要将 autoencode 设置为 true,而是在 beforeSubmit beforeSubmit 中手动编码数据: function(postdata, formid){ jQuery.each(postdata,function(n, v){ postdata[n] = jQuery('
    ').text(v).html(); });返回[真,“”]; }(这是针对5.0.1版本的)

标签: javascript jquery jqgrid


【解决方案1】:

我不建议您使用旧的 4.6 版本的 jqGrid(使用 i)。它有许多旧的错误,这些错误在 jqGrid 的更高版本中没有得到修复。 The demo 使用例如免费的 jqGrid 4.13.6 和 .您可以轻松验证,可以将一些代码,如<script>alert("Hello!");</script> 放在Client 列中,例如,在表单或内联编辑期间的数据而不执行脚本。数据将作为字符串'<script>alert("Hello!");</script>' 本地保存在内部data 中,但数据将根据$.jgrid.htmlEncode 进行编码在将数据放在HTML 页面上。因此,如果指定了autoencode: true,则不会执行任何脚本。

【讨论】:

  • 我使用的是 5.0.1 版本。我应该回到旧版本吗?
  • @user3865946:jqGrid 现在有 两个 主要的 alternative forks。第一个 id 是“free jqGrid”,是我开发的,可以在旧的 MIT 许可下免费使用。 “Guriddo jqGrid JS”是商业版,价格和许可协议可以在here找到。两个分支都基于 jqGrid 4.7。两者都使用绝对独立的版本编号。免费的 jqGrid 始终使用 4.x.y 版本来强调与 4.x 版本的 jqGrid 直到 4.13.6 的兼容性。 Guriddo 的第一个版本是 4.7.1、4.8、5.0.0、5.0.1、... 5.2.0。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-21
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多