JavaScript - 使用特殊字符编码对象

时间:2017-02-03 17:49:53

标签: javascript extjs

我有一个带有导出功能的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提交整个记录对象,一切正常。

感谢

1 个答案:

答案 0 :(得分:3)

使用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,etc...

的数据