0

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

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

4

2 回答 2

0

您可以在 FileWriterManager.aspx 页面上添加Buffer="true"指令<%# Page,然后在此函数中调用代码Response.Clear()以清除生成的 HTML 响应。然后用于Response.Write生成结果到浏览器。

于 2012-12-11T19:16:22.670 回答
0

如果在尝试调用 a 时得到正常的页面响应[WebMethod],则应首先检查 ASP.NET Ajax 是否配置正确。具体来说,检查<HttpModules>web.config 中的部分。

对于 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")

于 2012-12-11T22:17:40.733 回答