已调用 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
我有一个 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