JavaScript——使用特殊字符对对象进行编码

标签 javascript extjs

我有一个具有导出功能的 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/

相关文章:

javascript - 在 AngularJS 中使用 jsPDF 中的 addHTML 函数

javascript - 如何在html中嵌入文本文件?

javascript - extjs vtype 不适用于 textarea

javascript - 在没有商店的组合框中添加一个值

javascript - angular-sortablejs 与 angular 5 兼容吗?

javascript - typescript | JavaScript | Angular 2 | @Output 与 @Input

javascript - Firebase auth().signInWithEmailAndPassword 使用 try-catch async-await 未捕获错误

javascript - ExtJS散点图,根据数据中的标志高亮显示某些点

javascript - 在 ExtJS 组件中显示富文本

javascript - 在 sencha touch 2 中使用 oAuth 连接 facebook