.net &引用;Microsoft JScript编译错误:应为''&引用;调用ASMXWeb服务

.net &引用;Microsoft JScript编译错误:应为''&引用;调用ASMXWeb服务,.net,asp.net,web-services,javascript,.net,Asp.net,Web Services,Javascript,我在Visual Studio 2008(SP1)下创建了一个非常简单的ASP.NET web应用程序,目标是.NET 3.5 启动页面是一个简化的ASPX页面,包含4个文本框、一个按钮和两个JScript函数: 主体的OnLoad处理程序。此函数仅将文本框的值设置为特定日期和时间以进行测试 按钮的OnClick处理程序。此处理程序调用本地化web服务并显示其结果 本地化是一种web服务。它的工作是获取用户的地区和国家信息,创建CultureInfo对象,并解析日期和时间信息,以便验证开始

我在Visual Studio 2008(SP1)下创建了一个非常简单的ASP.NET web应用程序,目标是.NET 3.5

  • 启动页面是一个简化的ASPX页面,包含4个文本框、一个按钮和两个JScript函数:
    • 主体的OnLoad处理程序。此函数仅将文本框的值设置为特定日期和时间以进行测试
    • 按钮的OnClick处理程序。此处理程序调用本地化web服务并显示其结果
  • 本地化是一种web服务。它的工作是获取用户的地区和国家信息,创建CultureInfo对象,并解析日期和时间信息,以便验证开始日期是否早于结束日期。这是在没有大量JScript代码的情况下实现这一点的唯一可靠方法,而JScript代码本质上是重新发明轮子。结果作为JSON字符串返回
在我开始从调试器收到这些奇怪的错误消息之前,一切似乎都很正常。调试器将在此行中断:

        try {
            _this._webRequest.completed(Sys.EventArgs.Empty);
        }
        finally { // <-- RIGHT HERE, specifically, on the brace
            if (_this._xmlHttpRequest != null) {
                _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod;
                _this._xmlHttpRequest = null;
            }
        }
试试看{
_此.u webRequest.completed(Sys.EventArgs.Empty);
}

最后{/我要把这个问题的答案贴出来,冒着让自己难堪的风险

在JScript代码中,我对调用的结果进行了评估,如下所示:

function(r)
{
    var result = eval(r);
    if (!result.Succeeded)
        alert(result.Reason);
});
显然,问题在于,在将JSON字符串传递给eval时,必须将其括在括号中,如下所示:

function(r)
{
    var result = eval("(" + r + ")");
    if (!result.Succeeded)
        alert(result.Reason);
});

不要问我为什么这样做,它就是这样。我稍后会解释为什么需要括号(以及为什么不应该使用eval解析Json)

你能在finally块中提供剩余的代码吗?你不能依赖Ie javascript错误中的行号-你尝试过其他浏览器吗?我建议使用firebug的FireFox。根据要求添加finally块的剩余部分。