2017-02-03 82 views
2

我有一個ExtJS網格,它具有提供所選行/記錄對象的導出功能。問題是有一列有時會有特殊字符,特別是the less than char <,因此編碼字符串會意外終止。JavaScript - 使用特殊字符對對象進行編碼

這是我提交的下載代碼:

Ext.dom.Query.selectNode("iframe[name=myiframe]").src = myDownloadUrl +"?records=" + Ext.encode(records); 

不完整的編碼記錄對象提交下載之後,當<字符存在:

records:[{"id":1141,"view_name":"freemarker","view_value":"< 

所以字符串被終止在第一個<焦炭。

在沒有< char的行中,整個記錄對象被提交併且一切正常。

感謝

回答

3

嘗試URL編碼記錄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...

+0

在這種情況下,它提交了整個記錄,但所有的鍵,如「id」,「view_name」,「view_value」等等變成0.任何想法? – stackato

+0

也許你正在編碼一個數組。更新回答 – tonymayoral

+0

謝謝,這可以工作,但會需要一些後端更改。打開這個問題,看看有沒有人有更好的解決方案 – stackato

相關問題