0

我有一个旧项目 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 错误:'Signup' 未定义”错误消息。我在这里错过了什么吗?

4

2 回答 2

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;
}
于 2013-02-05T09:09:28.110 回答
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>
于 2012-06-26T17:53:33.203 回答