我有一个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中插入的情况)
由于
答案 0 :(得分:0)
Riplace与此:
<button id="btnClick" type="button" onclick="LoadDataTable();" >Cerca log</button>
你缺少type =“button”,这会阻止页面回发,并允许响应传递给OnSuccess