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

を呼び出そうとしたときに通常のページ応答が得られた場合は[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 に答える
0

FileWriterManager.aspx ページのディレクティブに追加Buffer="true"し、この関数でコードを呼び出して、生成された HTML 応答をクリアすることができます。次に、ブラウザに結果を生成するために使用します。<%# PageResponse.Clear()Response.Write

于 2012-12-11T19:16:22.670 に答える