У меня есть результат в формате JSON, отправленный обратно клиенту, который содержит знак $. по какой-то неизвестной причине код ломается.Метод декодирования ExtJS не может быть декодирован «& quot; После загрузки файла
Вот код, который кирпичи из доб-все-отладки:
doDecode = function(json){
return eval("(" + json + ")"); FAILS HERE
},
Вот мой JSON, как он покинул сервер (Насколько я знаю, я надеюсь, что сервер не принимает время чтобы декодировать эту & Quot на его свободное время):.
{
success: true,
total: 1,
results: [{
"ID": -1,
"Value": "POChangeRequestlblCustomerCatalogNumber",
"Description": "",
"Labels": {
"1": {
"ID": -1,
"LanguageID": 1,
"Value": "Catalog Number",
"ToolTip": "",
"LanguageName": "English",
"KeyID": -1,
"KeyValue": "POChangeRequestlblCustomerCatalogNumber",
"KeyDescription": ""
},
"2": {
"ID": -1,
"LanguageID": 2,
"Value": """, <<< THIS IS THE BAD PART!!!
"ToolTip": "",
"LanguageName": "Hebrew",
"KeyID": -1,
"KeyValue": "POChangeRequestlblCustomerCatalogNumber",
"KeyDescription": ""
}
},
"ServerComments": "1"
}]
}
это JSON, отправляется в типе содержимого текста/HTML, поскольку это является результатом операции загрузки файла. может ли это быть частью проблемы?
Хорошо, я продолжал отслеживать вниз проблему и обнаружил, что ExtJS делает эту функцию на возвращаемом значении из скрытого фрейма:
doFormUpload : function(o, ps, url){
...
try{
doc = frame.contentWindow.document || frame.contentDocument || WINDOW.frames[id].document;
if(doc){
if(doc.body){
if(/textarea/i.test((firstChild = doc.body.firstChild || {}).tagName)){
r.responseText = firstChild.value;
}else{
r.responseText = doc.body.innerHTML; << THIS IS WHERE MY " get decoded back to " (sign)
}
}
r.responseXML = doc.XMLDocument || doc;
}
}
catch(e) {}
...
}
Есть хороший способ решения этой проблемы. кажется, что браузер автоматически декодирует значение ???? кто угодно???? это серьезная проблема!
Ваш JSON действителен. Я бы опубликовал это на форуме EXT сайта Sencha.com. Это звучит как ошибка. –
Можете ли вы просмотреть ответ в чем-то вроде Firebug, чтобы убедиться, что строка JSON правильно возвращается с сервера? – RoccoC5
FWIW: JSON недействителен. Все ключи должны быть указаны. Не то, что это важно при использовании 'eval()' ... – user123444555621