我对PageMethod的调用非常简单。当我在.cs文件中单步执行PageMethod时,该值看起来像预期的那样。但是,在客户端,我得到一个未定义的结果。有任何想法吗?这应该非常简单。
这是我的js :(在我的ASPX页面中EnablePageMethods="true"
)
function test() {
alert(PageMethods.MyMethod("Joe Blow"));
}
这是我的C#:
public partial class test : System.Web.UI.Page
{
[WebMethod]
public static string MyMethod(string name)
{
return "Hello " + name;
}
}
答案 0 :(得分:7)
以下是如何使用MS Ajax调用PageMethods的答案。首先确保您已从MS网站下载了最新的Ajax库。
<asp:ScriptManager ID="sm1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
<input type="button" value="Greeting" onclick="greetings()" />
<script language="javascript" type="text/javascript">
function greetings() {
PageMethods.GreetingFromPage(function(response) {
alert(response);
});
}
</script>
[WebMethod]
public static string GreetingFromPage()
{
return "greeting from page";
}
这就是它!
答案 1 :(得分:3)
你要传入一个将在Success / Exception上执行的回调函数。所以在这种情况下,它会是这样的
PageMethods.MyMethod("Joe Blow", onSuccess, onError);
function onError(desc) {
}
function onSuccess(result) {
}
我会检查文档的确切用法。
答案 2 :(得分:1)
查看以下截屏视频。它解释了如何使用JQuery调用PageMethods:
答案 3 :(得分:0)
This是关于这个主题的伟大而具体的文章。
对我来说,以下代码正在运作。
我有一个异步处理excel文件的页面;在处理时,函数 EsperarFinDelCargue()轮询一个名为 CargueFinalizo()的 PageMethod 每秒钟查看处理是否已经结束。处理完成后,将进行重定向。
OnCallFinalizoComplete 是PageMethod调用的回调函数,因此您需要使用生成的对象。
<script type="text/javascript">
function EsperarFinDelCargue()
{
PageMethods.CargueFinalizo(OnCallFinalizoComplete);
if($('#<%=this.hidCargueFinalizado.ClientID %>').val() == "SI")
{
document.location = "CargarPanelHCP.aspx";
}
else
{
var t=setTimeout("EsperarFinDelCargue()",1000);
}
}
function OnCallFinalizoComplete(result,contexto,CargueFinalizo)
{
$('#<%=this.hidCargueFinalizado.ClientID %>').val(result);
}
</script>
这是aspx中的PageMethod代码:
[System.Web.Services.WebMethod]
public static string CargueFinalizo()
{
//Whatever you need
return HttpContext.Current.Session["ResultadoCarguePanel"] != null ? "SI" : "NO";
}
答案 4 :(得分:0)
Try This it will work fine
<script type="text/javascript">
function Generate()
{
var result = PageMethods.GenerateOTP(your parameter, function (response)
{
alert(response);
});
}
</script>