JSONフォーマットの結果がクライアントに返送され、$ quotサインを保持しています。いくつかの未知の理由のために、コードが壊れます。ここでファイルをアップロードした後にExtJSデコードメソッドが "&quot"デコードに失敗する
がext-すべてのデバッグからそのレンガコードです:それは、サーバーを残したとして、ここでは
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はtext/htmlのコンテンツ・タイプで送信されます。それは問題の一部になる可能性がありますか?
[OK]を、私は問題をダウン追跡し続け、ExtJSには、非表示のiframeから返された値でこの機能を行うことを見出した:
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が有効です。私はSencha.comサイトのEXTフォーラムでこれを投稿したいと思います。これはバグのように思えます。 –
JSON文字列がサーバーから正しく返されていることを確認するために、Firebugのようなレスポンスを表示できますか? – RoccoC5
FWIW:JSONが無効です。すべてのキーを引用符で囲む必要があります。 'eval()'を使うときは重要ではありません... – user123444555621