【问题标题】:Simple AJAX not working简单的 AJAX 不起作用
【发布时间】:2010-03-10 22:02:52
【问题描述】:

我有这个 AJAX 代码,但它似乎没有抛出“警报”方法。相反,什么也没有发生。我用 Fiddler 看了一下,得到了这个错误信息: {"Message":"There was an error processing the request.","StackTrace":"","ExceptionType":""}

我正在尝试在名为 MyWebMethod 的代码隐藏中调用 Web 方法:

 $.ajax({   type: "POST",
            url: "Test.aspx/MyWebMethod",
            data: "{" + username + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",

            success: function() {
                alert("success");
            },

            fail: function() {
                alert("Fail");
            }
 });

当我在页面上有脚本管理器时,Web 方法运行良好,但我想删除脚本管理器并认为使用 AJAX 是最好的方法。

谢谢

【问题讨论】:

  • 首先在没有数据的情况下尝试它,调用将返回诸如服务器时间戳之类的东西......作为字符串并发出警报。确保您的网络方法名称“用户名”匹配...编辑:我正在跟踪页面上的编辑...此时可能不相关...

标签: asp.net ajax webmethod


【解决方案1】:

您在 web.config 中启用了自定义错误。因此,返回的异常将是通用的(大部分为空白)并且每次都相同。这使得调试变得困难。

要查看真正的异常,请暂时禁用自定义错误。 Here is how to do that for web services only,如果您需要这种粒度。

【讨论】:

    【解决方案2】:

    我想如果你将fail 更改为error,你会得到第二个警告框。

    [编辑]我想如果你再改变

    data: "{" + username + "}"
    

    data: "{ 'username': '" + username + "' }"
    

    您将收到第一个警报,尽管如果不查看您正在调用的服务很难知道这一点。

    【讨论】:

    • 嗨,我将其更改为错误,并且警报确实显示。但我不确定它为什么会失败
    • 啊,抱歉没有看到您的编辑。这样就解决了问题!然而,web 方法返回一个布尔值。如何从“成功:”部分(或调用中的其他任何地方)获取此值?谢谢
    • 要获取成功返回的数据,请将success:function()更改为success:function(data)。根据您的服务设置,您将获得作为布尔值的数据或具有属性 .d 的数据,这是您的布尔值。
    • 宾果游戏!非常感谢您的帮助。我使用了“.d”属性。
    猜你喜欢
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2016-12-23
    • 2013-08-01
    • 2014-11-13
    • 2012-11-03
    • 2012-07-27
    • 1970-01-01
    相关资源
    最近更新 更多