0
我在ASP.NET MVC应用程序的顶部继承了一些EXTJS代码,并试图追踪Ext.msg.prompt框有一个错误字符串前面有一个“:”字符。这里的错误似乎发生的方法:以冒号字符开头的EXTJS方法出错字符串
var casePrompt = function() {
Ext.Msg.prompt("Numb", "", function(btn, text) {
if (btn == "ok") {
numbID = text.trim().toUpperCase();
Ext.Ajax.request({
url: "/location/method/" + numbID,
method: "GET",
callback: function(options, success, response) {
var reply = Ext.decode(response.responseText);
if (success) {
listOpen(reply.Data);
} else {
errorMsg(reply, function(button, text) { numbID = ""; });
}
}
});
}
});
};
如果一个数字进入框中的预期,一切工作正常。但是,如果有人输入相同的号码或任何有效的号码,并在其前面带有“:”,则该方法在返回控制器之前会出错。该错误只说:“Microsoft JScript中的编译错误:语法错误”,并强调将下面的代码EXT-ALL-debug.js:
doDecode = function(json){
return eval("(" + json + ;)');
}
有没有人见过这个,知道的办法赶上这个错误?我试图在VS2010中顺利完成此操作,但没有任何运气。
谢谢!
获取该json变量的值,我猜这个问题很明显 - 可能是服务器的格式错误的json响应。 如果这是一个数字字段,而不是一个字符串,客户端和服务器应该在这里真的做一些验证! 也许服务器在响应正文(纯文本或html)中发送错误消息,这就是为什么doDecode失败。 – mistaecko
是的,基本上没有错误处理的文本字符串,所以它只是通过无论放入什么。我同意这需要在多个层面进行验证。嗯。 – ewomack
也许值不包含在引号中?那么':234324'肯定会抛出一个错误,如果进入doDecode。 '(:234324)'不合法的Javascript,'“(:234324)”'是(因为它只是一个字符串)! – mistaecko