这一定是个经典问题,但我找不到任何问题的答案。 该页面位于
https://localhost/Secured/Report/FileWriterManager.aspx
这是我的Jquery代码。
par = 'some data';
$.post(
'/Secured/Report/FileWriterManager.aspx/CallAjax',
{ strPar: par },
function (msg) {
$('#lblError').text('Value Returned: ' + msg);
}
);
背后的代码是:
[WebMethod]
public static string CallAjax(string strPar)
{
return 'OK';
}
当我用firefox调试时,post语句遍历每行一行,执行lblError填充。响应是整个FileWriterManager.aspx html代码。我做错了什么?任何帮助将不胜感激。
答案 0 :(得分:0)
您可以在FileWriterManager.aspx页面上的Buffer="true"
指令中添加<%# Page
,然后在此函数中调用代码Response.Clear()
以清除生成的HTML响应。然后使用Response.Write
将结果生成到浏览器。
答案 1 :(得分:0)
如果在尝试调用[WebMethod]
时获得正常的页面响应,则应首先检查是否正确配置了ASP.NET Ajax。具体来说,请检查web.config中的<HttpModules>
部分。
对于ASP.NET 3.5应用程序,使用Visual Studio中的内置Web服务器:
<system.web>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>
</system.web>
使用IIS时:
<system.webServer>
<modules>
<remove name="ScriptModule"/>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>
</system.web>
原因是,ScriptModule实际上“拦截”了像/WebForm.aspx/WebMethod这样的请求,并处理静态方法的调用和响应的返回。因此,如果没有发生,则可能未配置模块。
如果您已完成配置,请在页面中添加<asp:ScriptManager runat="server" EnablePageMethods="true"/>
,然后启用页面方法。然后测试您是否可以使用Firebug调用页面方法:PageMethods.CallAjax("foo")
。