$ .Post asp.net方法调用

时间:2012-12-11 19:05:39

标签: c# asp.net jquery post

这一定是个经典问题,但我找不到任何问题的答案。 该页面位于

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代码。我做错了什么?任何帮助将不胜感激。

2 个答案:

答案 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")