代码之家  ›  专栏  ›  技术社区  ›  Mike Hofer

“Microsoft JScript编译错误:应为';'”调用ASMX Web服务

  •  1
  • Mike Hofer  · 技术社区  · 15 年前

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

    • 启动页是一个包含4个文本框、一个按钮和两个JScript函数的简化ASPX页:
      • 主体的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;
                }
            }
    

    错误信息如下:

    Microsoft JScript编译错误:应为“;”

    现在,这是令人费解的,研究通常建议确保安装了Java。一开始我嘲笑他,以为我有着广博而明显的高明的才智,不可能犯下如此愚蠢的错误。 每个人 了解Java和JavaScript之间的区别。所以,当没人看的时候,我试了一下。没什么区别。

    我不知道是什么导致了这一切的发生。堆栈跟踪显示它是堆栈上唯一的调用。甚至没有任何局部变量可供使用。其中出现的文件是一个生成的动态脚本资源。但是,函数是sys.net.xmlhttpexecutor对象的\onreadyStateChange函数。所以我至少可以说它在Ajax代码中持续发生。

    还有人看到这个吗?如果是,原因是什么?你是如何解决的?

    服务器端:

    • 视窗2000
    • IIS 7
    • ASP.NET
    • .NET 3.5

    发展

    • Visual Studio 2008 SP1版
    • .NET 3.5
    • 工业工程8
    • IIS 7
    2 回复  |  直到 15 年前
        1
  •  2
  •   Mike Hofer    15 年前

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

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

        2
  •  1
  •   Community Mohan Dere    8 年前
    推荐文章