我正在使用带有AS3的上传php脚本,现在使用JavaScript。如果没有问题,有一个测试功能可以返回:
{"erro":"OK","msg":"","descr":"op:ini,urlArq:\/Library\/WebServer\/Documents\/www\/sintran\/fotos\/teste.log"}
但JavaScript返回错误:JSON解析错误:JSON中不允许使用单引号(')
如您所见,没有单引号。也许“descr”属性会使解析引擎混淆:并且,但不希望更改它,因此AS3将不再读取此属性(是有用的数据)。
有什么想法吗?
编辑:斜杠使用反斜杠进行转义,但不会显示在上面。
编辑:代码:
formUpload.prototype.ini_test = function(evt){
console.log("ini_test - Retorno do servidor: "+evt.target.responseText);
var jsonRes = evt.target.responseText;
jsonRes = jsonRes.slice(jsonRes.indexOf("{"), jsonRes.lastIndexOf("}")+1);
try{
var Res = JSON.parse(jsonRes);
if(Res.erro!="OK"){
this.monitor_ini.innerHTML = "Erro: "+Res.msg;
} else {
this.monitor_ini.innerHTML = "";
var jExts = this.form.arquivo_tipos.value;
this.Exts = JSON.parse(jExts);
this.monitor_info.innerHTML = this.ajuda();
}
} catch(e){
this.monitor_ini.innerHTML = "Erro!";
console.log("formUpload ini_test Erro: "+e.message+" Resposta do servidor: "+jsonRes);
alert("Erro de teste de Upload. Resposta JavaScript: "+e.message);
}
}
编辑:全部由控制台日志显示 - 但是我这次尝试没有转义斜杠,所以最后的字符串是不同的:
ini_test - Retorno do servidor: {"erro":"OK","msg":"","descr":"op:ini,urlArq:\/Library\/WebServer\/Documents\/www\/sintran\/fotos\/teste.log"}
formUpload ini_test Erro: JSON Parse error: Single quotes (') are not allowed in JSON Resposta do servidor: {"erro":"OK","msg":"","descr":"op:ini,urlArq:/Library/WebServer/Documents/www/sintran/fotos/teste.log"}
答案 0 :(得分:0)
由于.responseText
是有效的JSON,很可能错误来自此处:
var jExts = this.form.arquivo_tipos.value;
this.Exts = JSON.parse(jExts);
任何来自表单输入的.value
都不能是有效的JSON,因此会抛出错误。
由于它们属于同一个try/catch
,因此很难说出它是哪一个。{p}如果您需要try/catch
,则可能更好。