我有一个具有导出功能的 ExtJS 网格,可以为其提交选定的行/记录对象。问题是有一列有时具有特殊字符,特别是 the less than char <
因此,编码的字符串意外终止。
这是我提交下载的代码:
Ext.dom.Query.selectNode("iframe[name=myiframe]").src = myDownloadUrl +"?records=" + Ext.encode(records);
当 < char 存在时,提交下载后编码记录对象不完整:
records:[{"id":1141,"view_name":"freemarker","view_value":"<
因此字符串在第一个 < 字符处终止。
在没有 < 字符的行中,整个记录对象都会被提交,并且一切正常。
谢谢
最佳答案
尝试使用Ext.Object.toQueryString(records)
对记录进行urlEncoding
示例来自 documentation :
Ext.Object.toQueryString({foo: 1, bar: 2}); // returns "foo=1&bar=2"
Ext.Object.toQueryString({foo: null, bar: 2}); // returns "foo=&bar=2"
Ext.Object.toQueryString({'some price': '$300'}); // returns "some%20price=%24300"
Ext.Object.toQueryString({date: new Date(2011, 0, 1)}); // returns "date=%222011-01-01T00%3A00%3A00%22"
Ext.Object.toQueryString({colors: ['red', 'green', 'blue']}); // returns "colors=red&colors=green&colors=blue"
如果您要对对象数组进行编码,您可以:
Ext.Object.toQueryString({data:records},true)
您将获得数据编码,如 data[0][id]=1141,data[0][view_name]=freemarker,data[1][id]=232,data[1][view_name ]=abc 等...
关于JavaScript——使用特殊字符对对象进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42030146/