已调用 Web 方法但未在 javascript 中输入 success/error 响应

Webmethod called but not entering success/error response in javascript

我有一个 WebForms 项目,我有 1 个页面,里面有一个数据表。 相关的东西是这样整理的:
Site.master:

<body>    
  <form runat="server">    
    <asp:ScriptManager runat="server" EnablePageMethods="true" ID="ScriptManager1">    
      <Scripts>    
          <asp:ScriptReference Path="~/Scripts/custom-datatable.js" />

Default.aspx.cs 中的 WebMethod:

    [System.Web.Services.WebMethod]
    public static object GetAllCONTEGGI(Nullable<DateTime> dateFrom, Nullable<DateTime> dateTo, Nullable<int> idUtente, Nullable<int> eventType, Nullable<int> logType)
    {
...
        var result = LogReader.SearchLogEvento(dateFrom, dateTo, idUtente, string_eventType, string_logType);
        return result;
    }

javascript自定义-datatable.js:

$(document).ready(function () {
...
PageMethods.GetAllCONTEGGI(null, null, null, null, null, SuccessOnLoadingLoadUtentiFunzioni, OnError);
function SuccessOnLoadingLoadUtentiFunzioni(dataset){...}
function OnError(data) { }
}

Default.aspx 页面:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    ...
    <table id="tblConteggi" class="display">
    ...
    <button id="btnClick" <%-- onclick="LoadDataTable();"--%> >Cerca log</button>
    ...

这种方式工作正常,即调用 $(document).ready(function () { ...

中的所有 javascript 代码

我注意到,当单击按钮 id="btnClick" 时,页面会执行回发,正如我在
中设置断点时看到的那样 protected void Page_Load(object sender, EventArgs e) { ... 共 Default.aspx.cs

无论如何,当我 create/load 数据表时,PageMethod 调用会传递给 SuccessOnLoadingLoadUtentiFunzioni。

令我感到奇怪的是,当我在按钮中添加 onclick 事件处理程序时 <button id="btnClick" onclick="LoadDataTable();" >Cerca log</button>, 并在该事件中插入所有 javascript 代码,而不是在 document.ready:

LoadDataTable()
{
...
PageMethods.GetAllCONTEGGI(null, null, null, null, null, SuccessOnLoadingLoadUtentiFunzioni, OnError);
function SuccessOnLoadingLoadUtentiFunzioni(dataset){...}
function OnError(data) { }
}

,WebMethod 被调用(正如我在调试中看到的那样),但它既不通过 OnSuccess (SuccessOnLoadingLoadUtentiFunzioni),也不通过 OnError。

我的问题是: 1. WebMethods 不应该进行回传吗? 2. 是什么原因导致 WebMethod 在第二种情况下不 return 响应(我在函数中插入 javascript 代码而不是直接在 document.ready 中的情况)

谢谢

替换为:

<button id="btnClick" type="button" onclick="LoadDataTable();" >Cerca log</button>

您缺少 type="button",这将阻止页面回发,并允许将响应传递给 OnSuccess