我有一个带有导出功能的ExtJS网格,为其提交所选的行/记录对象。问题是有一列有时会有特殊字符,特别是the less than char <
,因此编码字符串意外终止。
以下是我提交下载的代码:
Ext.dom.Query.selectNode("iframe[name=myiframe]").src = myDownloadUrl +"?records=" + Ext.encode(records);
提交下载后的不完整编码记录对象&lt; char存在:
records:[{"id":1141,"view_name":"freemarker","view_value":"<
因此字符串会在第一个字符串终止时终止。炭。
在没有&lt;的行中char提交整个记录对象,一切正常。
感谢
答案 0 :(得分:3)
使用Ext.Object.toQueryString(records)
来自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,etc...