【问题标题】:Calling server side method using AJAX使用 AJAX 调用服务器端方法
【发布时间】:2015-10-28 13:49:29
【问题描述】:

我正在尝试通过使用 AJAX 从客户端调用它来测试服务器端的函数。

每次调用 AJAX 方法时都会出现此错误:

http://localhost:5958/myaccount/notifications/myaccount/notifications/Default.aspx/method 加载资源失败:服务器响应状态为 404(未找到)

这是我的 AJAX 函数:

    function ShowCurrentTime() {
        $.ajax({
            type: "POST",
            url: "myaccount/notifications/Default.aspx/method",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function (response) {
                alert(response.d);
            }
        });
    }
    function OnSuccess(response) {
        alert(response.d);
    }

HTML 控件:

<input id="btnGetTime" type="button" value="Show Current Time"
    onclick="ShowCurrentTime()" />

我试图在服务器端调用的函数:

        [WebMethod]
    protected bool method()
    {
        return true;
    }

这样做的正确方法是什么?

更新

将网址更改为:'&lt;%= ResolveUrl("~/default.aspx/method") %&gt;',现在我收到 500 内部服务器错误。

更新2

内部错误是由于我将 [HttpPost] 属性更改为 [WebMethod] 并且它可以工作。

【问题讨论】:

  • 查看对这个 SO 问题的公认答案:stackoverflow.com/questions/6928533/… 尝试按照在目标 WebMethod 中完成的方式创建 URL,而不是对其进行硬编码
  • @IanGilroy 将 url 更改为: 现在我收到此错误: Uncaught SyntaxError: Invalid flags提供给 RegExp 构造函数“通知”
  • 也许你可以参考另一个这样的链接:ajax call jquery asp.net mvc

标签: javascript c# jquery asp.net ajax


【解决方案1】:

我认为问题出在您的 url

使用前导斜杠(/),如下所示。

url:"/myaccount/notifications/Default.aspx/method"

【讨论】:

  • 好的,我已经包含了一个前导斜杠。我现在收到 500(内部服务器错误)
【解决方案2】:

您的服务器端调用必须是静态公开的。 https://msdn.microsoft.com/en-us/library/bb398998(v=vs.90).aspx

[WebMethod]
public static bool method()
{
    return true;
}

【讨论】:

  • 尝试将您的网址设置为“Default.aspx/method”
【解决方案3】:

我假设您没有传递任何参数。那么你可以试试 Data:{} 而不是 Data:"{}"。

【讨论】:

    猜你喜欢
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多