AJAX调用页面中的类的静态方法,很诡异的现象

Dic4000 2010-10-12 10:47:44
VS2005开发环境,AJAX调用Web Service是正常的,但改写为AJAX调用页面中的类的静态方法却不行

using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
using System.Web.Services;

namespace WebTest
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

[WebMethod]
public static string SayHello(string name)
{
//打了断点,但没进来
return string.Concat("Hello World:", name, DateTime.Now.ToString());

}
}
}




<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebTest._Default" %>

<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>

<!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>无标题页</title>
<script type="text/javascript">
//!<[CDATA[
function SendInfo()
{
var str=$get("tbxName").value;

PageMethods.SayHello(str,onCallBack);

}

function onCallBack(result)
{

alert(result);//竟然输出的是整个页面的内容,很诡异
}
//]]>
</script>
</head>
<body>
<form id="form1" runat="server">

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />




<asp:TextBox ID="tbxName" runat="server"></asp:TextBox><input type="button" id="btnSend" value="发送" onclick="SendInfo()"/>
<div id="Result"></div>

</form>


</body>
</html>



下面是配置文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>

<configSections>
</configSections>
<appSettings/>
<connectionStrings/>

<system.web>
<!--
设置 compilation debug="true" 将调试符号插入
已编译的页面中。但由于这会
影响性能,因此只在开发过程中将此值
设置为 true。
-->
<compilation debug="true">
<assemblies>
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies>
</compilation>
<!--
通过 <authentication> 节可以配置 ASP.NET 使用的
安全身份验证模式,
以标识传入的用户。
-->
<authentication mode="Windows"/>
<!--
如果在执行请求的过程中出现未处理的错误,
则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
开发人员通过该节可以配置
要显示的 html 错误页
以代替错误堆栈跟踪。

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
</system.web>
</configuration>
...全文
218 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
BIRD72sky 2010-10-15
  • 打赏
  • 举报
回复
帮不了,很久没看这些了!
Dic4000 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 profiteerchen 的回复:]

你调用webservice是正常的什么意思?那个代码怎么写的?

你这句PageMethods.SayHello(str,onCallBack);

是不是应该写成onCallBack(PageMethods.SayHello(str));
[/Quote]
调用webservice是正常,就是方法是放在Web Service服务中(asmx),不是在页面中(aspx)

写成PageMethods.SayHello(str,onCallBack);是对的,PageMethods是asp.net ajax框架生成的javascript对象
wxb0326 2010-10-15
  • 打赏
  • 举报
回复
引用对着呢
Profiteerchen 2010-10-15
  • 打赏
  • 举报
回复
你调用webservice是正常的什么意思?那个代码怎么写的?

你这句PageMethods.SayHello(str,onCallBack);

是不是应该写成onCallBack(PageMethods.SayHello(str));
telankes2000 2010-10-15
  • 打赏
  • 举报
回复
说了一万遍的 !
没搞清楚什么客户端,什么是服务端
先回去好好msdn,多看些基础知识!
回去仔细看看asp.net生命周期 在来提问!
Dic4000 2010-10-13
  • 打赏
  • 举报
回复
顶下,看来要无满意结贴了
chen_ya_ping 2010-10-13
  • 打赏
  • 举报
回复
可不可以换个方式来搞:
http://www.cnblogs.com/chenping-987123/archive/2010/10/11/1848182.html
看下我的博客中的juqery调用后台方法,
如果你坚持有这个方法的话,你可以上网找asp.net ajax 客户端编程,会有很多的资料。
Dic4000 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 chen_ya_ping 的回复:]

可不可以换个方式来搞:
http://www.cnblogs.com/chenping-987123/archive/2010/10/11/1848182.html
看下我的博客中的juqery调用后台方法,
如果你坚持有这个方法的话,你可以上网找asp.net ajax 客户端编程,会有很多的资料。
[/Quote]

看了你那篇文章,我把代码完全COPY下来运行,点GetDate按钮时,
在成功执行回调后

success: function(data)
{

//查看data还是输出的是整个页面的内容,
$("input#showTime").val(eval('(' + data.d + ')')[0].nowtime);

},



我很无语....
现在可以肯定能传到服务端,但为什么就会输出整个页面的HTML呢?
porschev 2010-10-12
  • 打赏
  • 举报
回复
前台用AJAX调用后台方法。。。
Dic4000 2010-10-12
  • 打赏
  • 举报
回复
引用是正确的
sharpdevelop110 2010-10-12
  • 打赏
  • 举报
回复
js 调用服务端的方法?还有这种写法?
绝代坏坏 2010-10-12
  • 打赏
  • 举报
回复
看一下页面源代码,js引用的方法名是不是正确。
Dic4000 2010-10-12
  • 打赏
  • 举报
回复
再顶下,高手们给个思路就行了
Dic4000 2010-10-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 porschev 的回复:]

前台用AJAX调用后台方法。。。
[/Quote]
什么意思?例子是书上的,我只不过改了一下名称罢了

62,049

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧