未调用页面方法

本文关键字:方法 调用 | 更新日期: 2023-09-27 17:57:12

我设置了一个页面方法,并尝试通过jQuery调用它。有时我到达成功函数,有时进入错误函数,对我来说似乎是随机的。在任何情况下,响应都包含整个页面标记。

我尝试使用$.ajaxScriptManager,结果相同。我也在这里尝试了这个想法:用jQuery调用 ASP.NET PageMethod/WebMethod - 返回整个页面,什么都不返回。

下面是 JavaScript 代码:

$(document).ready(function() {
    $(".tree").dynatree({
        onActivate: function(node) {
            $('#title').val(node.data.title);
            $.ajax({
                type: "POST",
                url: window.location.href + "/GetData",
                data: "{'ID':22}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(response) { alert(response); },
                error: function() { alert('Error!'); }
            });
        }
    });
});

下面是 c# 代码:

[WebMethod]
public static string GetData(string ID)
{
    if (string.IsNullOrEmpty(ID))
        throw new Exception("No ID passed!");
    return "Test";
}

编辑:好吧,我让它工作了。我将参数类型从 int 更改为字符串,现在调用了该方法。我可以做 int。稍后解析,但为什么会发生这种情况?

未调用页面方法

正在发生的事情是,在 jQuery 调用中将数据设置为{}相当于将其设置为 NULL 的 JSON。在这种情况下,没有接受 null 的 Web 方法,并且调用失败。

我在当前的应用程序中正在做一些非常相似的事情,我可以看到的唯一区别是我在 ajax 调用中有以下额外选项:

beforeSend: function(xhr) { xhr.setRequestHeader("Content-type", "application/json; charset=utf-8"); }

希望有帮助...