jqgrid 4.13.1搜索过滤报错

jqgrid 4.13.1 search filter error

我使用的是jqgrid 4.13.1。在 jqfiddle 示例 http://jsfiddle.net/9ezy09ep/162/ 中,当我尝试像这样过滤列表时(重要:将 %tab% 替换为制表符字符,ascii 值=9):

客户 ID > 包含 > %tab%HANAR

我在文件 jquery-1.12.0.min.js 中收到错误:

SyntaxError: JSON.parse: bad control character in string literal at line 1 column 67 of the JSON data

如何对 jqgrid 过滤器的值字段中的制表符进行转义?

我分析了问题。存在问题是因为 the line of code of free jqGrid 4.13.1. The line come from old jqGrid (see here 中使用了 xmlJsonClass.toJson)。我想已经删除 xmlJsonClass.toJson 的用法并仅使用 JSON.stringify,但我保留旧方法的用法,希望与旧版本的 jqGrid 保持更好的兼容性。

问题是JSON标准(参见here要求只转义"\符号和其他一些符号,如制表符,可以转义:

方法 xmlJsonClass.toJson 生成字符串,它转义制表符(转换为两个字符 \t)并且 JSON.stringify 不要这样做。

使用 $.parseJSON 反序列化 postData.filters 后问题稍后出现,它在内部调用 JSON.parse

我修改了搜索对话框的代码以使用 JSON.stringify 作为首选(它存在于所有现代网络浏览器中,并且可以通过包含 json2.js 包含在旧的网络浏览器中) .我将继续使用 xmlJsonClass.toJson 仅用于后备方案。

我提交了 the fix to GitHub, which fixes the problem. See http://jsfiddle.net/OlegKi/9ezy09ep/163/,它使用来自 GitHub 的最新资源。