前几天做到一个AJAX实现,一直使用的代码突然报“XX未定义”的错误,在网上找了找发现几种解决方法也不合适。
自己在BIN文件夹里引用的是AjaxPro.2.dll
web.config文件里配置的写法如下:
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
</httpHandlers>
而且后台在Page_Load方法里也把此页面注册了:
AjaxPro.Utility.RegisterTypeForAjax(typeof(Event_Report));
方法如下:
[AjaxPro.AjaxMethod]
public string SubSbr(string sbr, string event_id, string eventTypeId)
{
string info = "0";
try
{
AcdReport.xxx(event_id, sbr, "", "", eventTypeId);
}
catch (Exception)
{
info = "-1";
}
return info;
}
前台页面的<%Page%>里,定义也没有出错:
CodeFile="Event_Report.aspx.cs"
Inherits="Event_Report"
在JS方法里引用如下:
function subName(id,type)
{
var sbr=document.getElementById("SBR").value;
var info = Event_Report.SubSbr(sbr,id,type).value;
}
但就是一直报X
-----------------------------------------------------------------------------------------------------------------
同事说提供了一种新的方法,就是自定义加一个路径:
在后台页面最上面加一个路径:
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Text;
[AjaxPro.AjaxNamespace("Test")]
然后在前台JS方法里引用的方法换成此路径的:
var info = Test.SubSbr(sbr,id,type).value;
后来还是报未定义错误。。!!!!!!!!!!!!!!!!!!!!
找了半天,无意中尝试一下:
因为JS方法的参数是在后台拼代码生成的,可能考虑到参数的问题,
因为在JS方法体里,引用参数的时候,加了一个转化如下:
var info = Test.SubSbr(sbr,id.toString(),type.toString()).value;
后来就成功了。。。。。。。。。。。。。。。。。。。。