100分了,我想问一个关于在ajax中调用WebMethod和PageMethod的问题!
现在我需要在调用WebMethod和PageMethod现在调用WebMethod成功了,但是调用PageMethod不成功,提示找不到PageMethod
已经做的操作如下
ScriptManager中添加了 EnablePageMethods="True"
在方法前添加了[WebMethod](VB.NET 为 <WebMethod()> _)
添加了[System.Web.Script.Services.ScriptService] (VB.NET 为<System.Web.Script.Services.ScriptService()> _)
在javascript中就是找不到PageMethod
后台看到如果要调用Page中的方法要申明为Static(VB.NET为 Shared)
但是我加上了以后出现了好多 "没有类的显式实例,就无法从共享方法或共享成员初始值设定项中引用该类的实例成员。”
比如需要调用的方法里有对页面中Runat="server" 控件的操作,添加了Static声明后就提示了那句话,也不能执行了
谁帮我解决一下!!!谢谢
--------------------编程问答-------------------- js里面要调用的方法,应该是public类型的,你的是吗? --------------------编程问答-------------------- 小例子:
前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="AjaxFrame.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">
var pa1 = "Time is" ;
function go() {
PageMethods.cs(pa1,js);
}
function js(cs)
{
alert(cs);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="button" onclick="go();" value="submits" />
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
</div>
</form>
</body>
</html>
-----------------------------------------------------------------------------------------------------------------------
后台代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace AjaxFrame
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[System.Web.Services.WebMethod]
public static string cs(string pa1)
{
return pa1+DateTime.Now.ToString();
}
}
} --------------------编程问答-------------------- 高手幫我看一下這個問題怎解決
http://topic.csdn.net/u/20071024/21/2368ffaa-9a54-48f3-8f86-95ad2e0138bd.html --------------------编程问答-------------------- 非常感谢这个帖子,终于知道pagemethod如何调用了。 --------------------编程问答-------------------- 接分 --------------------编程问答-------------------- 正常模式运行的Page,是一个Page实例,所有控件都以实例形式存在于Page中。PageMethod必须是static的,因此执行时并没有Page实例,没有任何控件,只能做WebService那样的纯粹数据处理,不能使用Page模型。 --------------------编程问答-------------------- 帮顶
--------------------编程问答-------------------- 先顶一个再说 --------------------编程问答-------------------- 8错,留个脚印 --------------------编程问答-------------------- VS的问题,用VS.NET2008正常 --------------------编程问答-------------------- 我记得微软有这样的demo!! --------------------编程问答-------------------- 顶一哈 解决了就好。。。。 --------------------编程问答-------------------- 关注... --------------------编程问答-------------------- Mark --------------------编程问答-------------------- 我也感谢ayooxi(路人),纠结了半天的问题终于找到答案了 --------------------编程问答-------------------- 顶顶~ --------------------编程问答-------------------- PageMethods方法是在页面或者js文件中调用当前页面后台代码的方法,这种方法有以下几个步骤,
一、在页面上添加<asp:ScriptManagerProxy></asp:ScriptManagerProxy>控件,如果出现PageMethods未定义时可在页面上或者js文件中引入以下代码即可
var PageMethods = function() {
PageMethods.initializeBase(this);
this._timeout = 0;
this._userContext = null;
this._succeeded = null;
this._failed = null;
}
二、需调用的后台方法必须是public 和static的,同时为方法添加
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false)]属性,
使用方法PageMethods.方法名(参数,回调函数)。
补充:.NET技术 , ASP.NET