前幾天做到一個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;
後來就成功了。。。。。。。。。。。。。。。。。。。。