2016-03-16 82 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的最新源代碼。