web.config
    <httpHandlers>
      <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro" />
    </httpHandlers>namespace Tajax
{
public class messagesAjax : System.Web.UI.Page
{
[AjaxPro.AjaxMethod]
public string getNewMessages(int lx,int memeberID)
{
}
}
}namespace SchoolOA
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
AjaxPro.Utility.RegisterTypeForAjax(typeof(messagesAjax));
}
}
<script language="javascript">var strMess=Tajax.messagesAjax.getPopMessages(1,2).value;
</script>错误提示Tajax未定义,

解决方案 »

  1.   

    在本机调试正常,到服务器(windows2003)上就出错,郁闷啊 
    .ashx,.asmx扩展都加了,程序文件夹的权限也设了,就是不好使;服务器是我自己的,本机是window200,不知道windows2003有什么特殊注意的地方
      

  2.   

    本机程序运行后通过http://localhost/ajaxpro/prototype.ashx这几个.ashx文件都能访问到;但到服务器上就访问不到了;手动把本级生成的.ashx文件传到服务器也不行
      

  3.   

    在IIS6中 将文件类型.ashx添加到 iis可以输出的类型中
      

  4.   

    hertcloud(·£DOTNET@C/C++£·) 
    怎样把将文件类型.ashx添加到 iis可以输出的类型中
    请指教
      

  5.   

    我在服务器“应用程序映射”处加了.ashx,限制为get post,你说的是不是这个意思
      

  6.   

    今天再解决不了就只能放弃ajax了,郁闷啊
      

  7.   

    楼主有没有搞错,你调用的方法是:
    Tajax.messagesAjax.getPopMessages(1,2)而你的声明的服务器端方法是:
    [AjaxPro.AjaxMethod]
    public string getNewMessages(int lx,int memeberID)哪来的getPopMessages方法让你调用呢?
      

  8.   

    应为多出调用ajax,函数名写错了,问题不在这,谢谢
      

  9.   

    AjaxPro.Utility.RegisterTypeForAjax(typeof(messagesAjax));改成AjaxPro.Utility.RegisterTypeForAjax(this.GetType());
    var strMess=Tajax.messagesAjax.getPopMessages(1,2).value;改成
    var strMess=<%=this.GetType());%>.getPopMessages(1,2).value;
      

  10.   

    能把具体的错误信息贴出来吗?比如那个类对象未定义,如果提示AjaxPro类对象未定义,事实上这个类是在core.ashx中定义的。试试是否使用http://域名/ajaxpro/core.ashx访问,然后在出错页面上右键查看源代码检查是否有类似如下脚本注册
    <script type="text/javascript" src="/ajaxpro/core.ashx"></script>如果没有,说明你代码页忘了AjaxPro.Utility.RegisterTypeForAjax(typeof(messagesAjax));如果提示其他类未定义,那么可能是对应的类型未注册,请检查注册类型AjaxPro.Utility.RegisterTypeForAjax
      

  11.   

    afgghepss14() 
    照你说的改了,js 是var strMess=ASP.leftFrame_aspx.getPopMessages(1,1).value;
    在本机运行正常,到服务器上报“ASP”未定义
      

  12.   

    Truly() 
    本机程序运行后通过http://localhost/ajaxpro/prototype.ashx这几个.ashx文件都能访问到;但到服务器上就访问不到了;手动把本级生成的.ashx文件传到服务器也不行服务器上没有生成.ashx文件,
    但<script type="text/javascript" src="/ajaxpro/core.ashx"></script>这些代码生成了,说明ajaxpor.dll文件起作用了,但为什么没有生成.ashx文件不明白
      

  13.   

    webdiyer(陕北吴旗娃),谢谢!
    我发的就是实际的代码,仅是函数名写错了和getPopMessages(,){}函数的具体代码没贴出了,因为在本机好用,所以不会是getPopMessages函数内部代码出错了
      

  14.   

    var strMess=<%=this.GetType());%>.getPopMessages(1,2).value;是错误的,this.GetType不能正确获取到的。它将来的值是ASP.页面类型,这样就导致了错误。
    正确答案:
    如果你的ajax方法放到页面后台,假设这个页面名字是abc.aspx那么
    abc.aspx.cs
    // page_load
    AjaxPro.Utility.RegisterTypeForAjax(typeof(abc));// 注意页面的类型:public partial class abc与这里是对应的。// 方法定义
    [AjaxPro.AjaxMethod]
    public string getPopMessages(int lx,int memeberID)js:
    var strMess = abc.getPopMessages(1,2).value;
      

  15.   

    Truly() 
    Tajax是名称空间,提示的是它未定义;把Tajax改称SchoolOA调用处的名称空间,就提示“SchoolOA”未定义
      

  16.   

    .ashx文件在磁盘上是看不到的,它会经过httpHandlers处理,不是以文件方式访问的。
      

  17.   

    对于带有命名空间的,那么abc.aspx.cs
    // page_load
    AjaxPro.Utility.RegisterTypeForAjax(typeof(Tajax.类名));// 注意命名空间和类名与这里是对应的。
    js:
    var strMess = Tajax.类名.getPopMessages(1,2).value;
      

  18.   

    Truly() 
    照你的方法做了,
    我的文件是leftFrame.aspx.cs
    AjaxPro.Utility.RegisterTypeForAjax(typeof(leftFrame));
    页面类型是这样的
    namespace SchoolOA
    {
    /// <summary>
    /// leftFrame 的摘要说明。
    /// </summary>
    public  class leftFrame : System.Web.UI.Page
    {
    ……
    "partial"是什么意思js
    var strMess = leftFrame.getPopMessages(1,2).value;
    本机就包错了,leftFrame未定义
      

  19.   

    如果想知道ajaxpro注册的客户端代理的js引用,可以看以下代码Type type = typeof(aaa);
    string assemblyName = type.FullName + "," + type.Assembly.FullName.Substring(0, type.Assembly.FullName.IndexOf(","));if (type.Assembly.FullName.StartsWith("App_Code."))
        assemblyName = type.FullName + ",App_Code";string link = "<script type=\"text/javascript\" src=\"/ajaxpro/" + assemblyName + ".ashx\"></script>";其中的assemblyName就是js的路径,而typeof(类名).FullName是你需要的那个方法的前缀。也就是<%=typeof(类名).FullName%>.getPopMessages(1,2).value;当然实际中不用这么写,直接写 命名空间.类.方法
      

  20.   

    partial是2005的一个概念,你是在用vs2003在开发,可能有一点点不同----->
    js
    var strMess = SchoolOA.leftFrame.getPopMessages(1,2).value;
      

  21.   

    Truly() 
    AjaxPro.Utility.RegisterTypeForAjax(typeof(SchoolOA.leftFrame));
    var strMess = SchoolOA.leftFrame.getPopMessages(1,2).value;
    加了命名空间,本机测试正常;到服务器上又提示“SchoolOA”未定义,又报命名空间未定义服务器上,通过http:/……/ajaxpro/prototype.ashx,访问不到3个.ashx,证明ajaxpro.dll没有生成这3个文件,是不是这儿出了错,是哪儿没配好吗?
      

  22.   

    由于换了工作的原因,以后可能不用ajaxpro了,今天我会写一些ajaxpro的文章,算是有个了结。有空可以去我博客园的blog去看看
      

  23.   

    Truly() 
    我用的是vs2003
    看运行时的leftFrame.aspx文件的原文件<script type="text/javascript" src="/ajaxpro/core.ashx"></script>这些代码生成了,说明ajaxpor.dll文件起作用了
      

  24.   

    你服务器上的web。config有问题吧?
      

  25.   

    应该是Web.config配置的原因,请检查web.config:
    <httpHandlers>
      <add verb="*" path="*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
    </httpHandlers>同时项目是否引用AjaxPro.2.dll,同时确保bin下面AjaxPro.2.dll的存在由于我没有装2003,所以没办法帮您测试。
      

  26.   

    Truly() 
    好的,一定好好拜读一下你的blog,
    可是我现在这个问题还没解决呢,郁闷中;
    今天解决不了我就只能放弃ajax了,项目不等人啊,Truly,你有别的好的建议吗,实现无刷新更新页面
      

  27.   

    Truly(),nutpp() 
    我用的是dotnetframework 1.1版本,用的ajaxpro.dll
    web.config
    <httpHandlers>
          <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro" />
        </httpHandlers>
    bin目录下ajaxpro.dll文件存在
      

  28.   

    ajaxpro是比较灵活的ajax框架,其余的话可以使用微软新近推出的asp.net ajax rc,比较傻瓜。
      

  29.   

    听说微软的altas,名字可能打错了,必须在asp.net 2.0下,我现在的项目是vs2003,没法升级了,听说web项目升级后有很多问题
      

  30.   

    kokokokokoko(速追)
    你的服务器是什么环境,我的是windows2003,本机是windows2000,到服务器上就对象未定义,实在不行我就把服务器系统重做,不过太麻烦了重做服务器;应该还是服务器配置的问题,就是不知道问题出在哪,我们从服务器配置的角度多思考一下,集思广益
      

  31.   

    在服务器上打开iis,-》右键默认站点-》属性-》配置-》.ashx-》c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll检查一下,再不行就帮不了你了
      

  32.   

    我本機是windows2003、vs2005。並且本機就出現錯誤 了,我用的是ajax.dll.其余的web.config和后臺、前臺代碼都好象差不多。
      

  33.   

    Truly() 
    .ashx  .asmx 应用程序扩展原先就加了,ajaxpro.dll不知道还操作什么
      

  34.   

    vs2005下没试过,不过好像2005下需要用ajaxpro2.dll,
      

  35.   

    看看这个文件夹下面 C:\Documents and Settings\你的windows帐户名\Local Settings\Temporary Internet Files 有没有生成 prototype.ashx core.ashx
      

  36.   

    C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files 生成 prototype.ashx core.ashx,
    C:\Documents and Settings下没有我建立的帐户名,是不是问题出在这了
      

  37.   

    就是看看 这些脚本有没有 写到你本地去;既然是本机没错,服务器有错,那一定是服务器的设置了; 
    共享一下 我前两天的一段经历: 给服务器配置shtml 两个服务器都可以,有一台死活不行,查了很久 能试的方法都试了,还是不行。后来无意中发现。那台服务器上不知道什么时候加了一个过滤器把shtml拦截了。。晕啊所以,还是看看服务器的设置吧
      

  38.   

    qizi82() 
    我在本机访问服务器上的程序,察看本级Temporary Internet Files 生成 prototype.ashx core.ashx,说明服务器上生成了这几个.ashx文件,但http://服务器地址/ajaxpro/prototype.ashx问什么不能访问到,请指教
      

  39.   

    Truly:如果是1.1版本没有partial关键字怎么办呢,就注册簿上了
      

  40.   

    看看这个文件夹下面 C:\Documents and Settings\你的windows帐户名\Local Settings\Temporary Internet Files 有没有生成 prototype.ashx core.ashx
    :我本機這個目錄下有prototype-core.ashx、core.js沒有prototype.ashx、core.ashx
    請問qizi82() ,如何處理
      

  41.   

    Tajax是名称空间,提示的是它未定义;把Tajax改称SchoolOA调用处的名称空间,就提示“SchoolOA”未定义
      

  42.   

    prototype.ashx、core.ashx有这些文件也不行,我也使这个问题,好麻烦,好像是配置的问题吧
      

  43.   

    partial是2005中的东西,而且这个不是问题所在。现在你本机是正常的,说明代码是没问题,重点检查权限,配置等
      

  44.   

    我的代碼也全貼出來。大家幫看看。
    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="MyDemo._Default" %><!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">
        MyDemo._Default.GetMessageOfTheDay(GetMessageOfTheDay_CallBack);
        function GetMessageOfTheDay_CallBack(response)
        {
            alert(response.value);
        }
    </script>
    </head>
    <body>
        <form id="form1" runat="server">
        </form>
    </body>
    </html>
      

  45.   

    using System;
    using System.Data;
    using System.Configuration;
    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 MyDemo
    {    public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                //注册我们感兴趣的包含服务器端函数
                //的类
                Ajax.Utility.RegisterTypeForAjax(typeof(MyDemo._Default));        }
            [Ajax.AjaxMethod()]
            public string GetMessageOfTheDay()
            {
                return "Experience is the mother of wisdom";
            }
        }
    }
      

  46.   

    <httpHandlers>
    <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/>
    </httpHandlers>另,bin下有ajax.dll,並已引用,其它的好象沒設那里了。我的環境是win2003+vs2005.
      

  47.   

    我看看你生成页面的hmtl代码是怎样的?
      

  48.   


    <!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><title>
    未命名頁面
    </title>
    <script  type="text/javascript">
        MyDemo._Default.GetMessageOfTheDay(GetMessageOfTheDay_CallBack);
        function GetMessageOfTheDay_CallBack(response)
        {
            alert(response.value);
        }
    </script>
    </head>
    <body>
        <form name="form1" method="post" action="Default.aspx" id="form1">
    <div>
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGTXq9cgn9J89hYqlxJY5/t0c+gUWg==" />
    </div>
        </form>
    </body>
    </html><!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><title>
    未命名頁面
    </title>
    <script  type="text/javascript">
        MyDemo._Default.GetMessageOfTheDay(GetMessageOfTheDay_CallBack);
        function GetMessageOfTheDay_CallBack(response)
        {
            alert(response.value);
        }
    </script>
    </head>
    <body>
        <form name="form1" method="post" action="Default.aspx" id="form1">
    <div>
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGTXq9cgn9J89hYqlxJY5/t0c+gUWg==" />
    </div>
        </form>
    </body>
    </html>
    這是生成的html代碼
      

  49.   

    to kokokokokoko(速追)很明显,没有注册脚本引用。注意cs文中中page_load中
    AjaxPro.Utility.RegisterTypeForAjax(typeof(类名));
      

  50.   

    to Truly(),但我代碼里明顯有這個註冊啊,只是可能沒起作用吧
      

  51.   

    之所以出现这种情况,是因为AjaxPro在封装时对应用该组件的网页,有特殊的要求,就是网页中的Form必须加上runat=“server“属性
      

  52.   

    我也遇到和你相似的问题,在XP上没什么问题,在2003死活不行了
    查原因查了两天了,兜了一圈,发现楼主ajaxpro类对象未定义错误,通过配置服务器(IIS)可以解决。此方法本人试了,可以解决,只可惜我的错误不止是这个问题,现在又出现返回NULL的问题,郁闷!ajaxpro类对象未定义错误解决方案: (摘自http://topic.csdn.net/u/20070710/16/ef1b3685-6326-45cd-b6fd-696863335802.html)
    本地测试成功的代码传到虚拟空间出现这样的错误!不要去修改任何程序 
    首先打开IIS配置--》主目录--》选择配置(权限配置)--》这里则有扩展的权限配置,添加浏览       c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll 
    扩展名为     .ashx   
    动作:限制为     GET,HEAD,POST,DEBUG 
    然后最后一个选项   :去掉确认文件是否存在这个选项 
      

  53.   

    IIS Basic Setting, Application pools ==>ASP.NET V2.0