2016-03-16 27 views
1

我使用jqgrid 4.13.1。在jqfiddle示例http://jsfiddle.net/9ezy09ep/162/,当我尝试过滤列表是这样的(重要的是:与突片炭替换%标签%,ASCII值= 9):jqgrid 4.13.1搜索过滤器错误

客户ID>包含>%标签%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的过滤器的值字段标签字符?

回答

2

我分析了这个问题。由于使用xmlJsonClass.toJsonthe line免费jqGrid 4.13.1的代码存在的问题。该行来自旧的jqGrid(请参阅here)。我认为已经删除了xmlJsonClass.toJson的使用,并且只使用了JSON.stringify,但我认为旧方法的使用希望与旧版本的jqGrid保持更好的兼容性。

的问题是JSON标准(见here需要逃脱只有"\符号和其他一些符号,如标签,可能是转义:

enter image description here

的方法xmlJsonClass.toJson生成字符串,其中转义标签(转换为两个字符\t)和JSON.stringify不这样做。

问题晚一点一个使用$.parseJSON,要求JSON.parse内部反序列化postData.filters后。

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

我承诺the fix GitHub,它解决了这个问题。请参阅http://jsfiddle.net/OlegKi/9ezy09ep/163/,它使用GitHub的最新源代码。