AjaxMethod“Class”是未定义的错误

时间:2012-06-26 17:40:51

标签: javascript asp.net ajax

我有一个旧项目asp.net,它使用Ajax.AjaxMethod()从Javascript调用服务器端代码。它之前工作正常(之前我的意思是几年前),但现在它已经停止工作了。

这是我的C#代码:

public partial class Signup : System.Web.UI.Page{
    protected void Page_Load(object sender, EventArgs e){
        Ajax.Utility.RegisterTypeForAjax(typeof(Signup));
    }

    [Ajax.AjaxMethod()]
    public DataTable fillStateDdl(int countryid)
    {
      objState = new MyClass.State();
      DataTable dtState = new DataTable();
      objState.CountryId = Convert.ToInt32(countryid);
      dtState = objState.GetStateCountry().Tables[0];
      return dtState;
    }
}

这是我的JavaScript代码:

function fillStates(countryid)
{
  var cntryid=countryid.options[countryid.selectedIndex].value;
  var response=Signup.fillStateDdl(cntryid);

  var states=response.value;
}

在javascript中我收到“Microsoft JScript错误:'注册'未定义”错误消息。我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:1)

你最好分开你的AjaxMethod。

public partial class Signup : System.Web.UI.Page{
    protected void Page_Load(object sender, EventArgs e){
        Ajax.Utility.RegisterTypeForAjax(typeof(YourAjaxClass));
    }
}

public class YourAjaxClass {

    [Ajax.AjaxMethod()]
    public DataTable fillStateDdl(int countryid)
    {
      objState = new MyClass.State();
      DataTable dtState = new DataTable();
      objState.CountryId = Convert.ToInt32(countryid);
      dtState = objState.GetStateCountry().Tables[0];
      return dtState;
    }
}

您不能继承自System.Web.Ui.Page的RegisterTypeForAjax对象。 它不起作用。

然后你可以从javascript调用它。

function fillStates(countryid)
{
  var cntryid=countryid.options[countryid.selectedIndex].value;
  var response=YourAjaxClass.fillStateDdl(cntryid);

  var states=response.value;
}

答案 1 :(得分:0)

我认为你缺少ajax的http处理程序。在system.web

下的web.config中添加这些
<system.web>
<-- 

Other configuration


 -->

<httpHandlers>
      <add verb="POST,GET" path="*.ashx" type="Ajax.AjaxHandlerFactory,Ajax"/>
</httpHandlers>

</system.web>