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

  • 问题

  • 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>
    
    

    2010年10月13日 2:02

答案