Webmethod调用但未在javascript中输入成功/错误响应

时间:2017-06-08 11:43:25

标签: javascript .net webmethod

我有一个WebForms项目,我有一个内部有Datatable的页面。 相关的事情以这种方式组织:
的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 custom-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)     {... of Default.aspx.cs

无论如何,当我创建/加载数据表时,PageMethod调用会传递给SuccessOnLoadingLoadUtentiFunzioni。

对我来说有点奇怪的是,当我在按钮<button id="btnClick" onclick="LoadDataTable();" >Cerca log</button>中添加onclick事件处理程序时, 并在该事件中插入所有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在第二种情况下不返回响应的原因(我在函数中插入javascript代码而不是直接在document.ready中插入的情况)

由于

1 个答案:

答案 0 :(得分:0)

Riplace与此:

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

你缺少type =“button”,这会阻止页面回发,并允许响应传递给OnSuccess