1

我有一个非常简单的页面,[WebMethod]里面有一个返回简单消息的页面。我想通过$.ajax客户端显示此消息。但是我的网站正在使用重写规则,因此我的 url 变得对用户可读。

EX:实际网页:www.mysite.com/about // 其中包含 about 文件夹和用户控件

没有为此的asp​​x页面,而是我使用一种方法来获取网页数据,该数据是实际的html页面并在用户控件上显示内容。

这是 Jquery 部分。

$(document).ready(function () {
    $('.info a').click(function () {
        $.ajax({
            type: 'POST',
            url: '/about/showServer', //which url to put here
            async: true,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (result) {
                alert("result.d");
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(textStatus);
            },
        });
    });
}); 

C#

[WebMethod] // this method is in the user control
      public static string showServer()
      {
            return "Hello from server";
      }

如何使用 $.ajax 从客户端调用此方法

感谢您的时间和帮助。

编辑

我的网站有这个结构

mysite.com/about

/about/defualt.aspx --> 加载用户控件

用户控件位于

mysite.com/ConLib/Custom/about.ascx/showServer

所以我把它设置成这样

url: '/ConLib/Custom/about.ascx/showServer',

但是我在 XHR 请求“404 错误”中看到了 chrome 开发人员工具中的错误,因为当您键入 mysite.com/conlib/blah blah ..reqrites 不允许这样做并引发 404 错误..

4

3 回答 3

1

你需要装饰你的网络方法

  [WebInvoke(Method = "POST",
        BodyStyle = WebMessageBodyStyle.Wrapped,
        ResponseFormat = WebMessageFormat.Json)]
  public static string showServer()
  {
        return "Hello from server";
  }
于 2013-05-17T14:03:33.437 回答
1

你的ajaxsuccess方法应该是这样的:

alert(result.d);

而不是这个:

success: function (result) {
    alert("result.d");
}

应该url是:

url: "Default.ascx/showServer",   // UserControlPage/MethodName
于 2013-05-17T13:59:51.657 回答
1

如果您的 WebMethod 位于用户控件中,则需要将其移至 ASPX 页面。看到这个帖子:

如何在 UserControl (.ascx) 中调用 ASP.NET WebMethod

参数的url:形式应为'/MyPage.aspx/showServer'

于 2013-05-17T14:17:20.373 回答