2017-02-03 2 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

Try urlEncoding записи с 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

Смежные вопросы