9

こんにちは、javascript から単純なページ メソッドを呼び出しています。マークアップ時のコードは次のとおりです。

 function OnCallSumComplete(result, userContext, methodName) {             
            alert(result);
 }
 function OnCallSumError(error, userContext, methodName) {
     if (error !== null) {
         alert(error.get_message());
     }
 }
 function test(){
     var contextArray = "";
     PageMethods.TestMethod("test parameter", OnCallSumComplete, OnCallSumError,  contextArray);
 }

 <asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server" />

csで

 [System.Web.Services.WebMethod]
 public static string TestMethod(string para)
 {

    return "Yes this is working";
 }

アラートに結果が表示され、「null」と表示されます。firebug を確認しましたが、コンソールからエラーが表示されません。

TestMethod を

 [System.Web.Services.WebMethod]
 public static string TestMethod()
 {
    return "Yes this is working";
 }

そして PageMethod へ

 PageMethods.TestMethod( function (response) { alert(response);  } );

「はい、これは機能しています」という正しい応答が表示されます。ただし、関数にパラメーターを渡す必要があります。私は何かが恋しいですか?

手伝ってくれてありがとう。

4

4 に答える 4

3

主な問題は、ScriptManager に使用しているアセンブリにあると思います。

<asp:ScriptManager ID="ScriptManager1" 
                   EnablePageMethods="true" 
                   runat="server" />

問題を解決するには Webconfig を使用します -

<pages>
  <controls>
    <add tagPrefix="ajax" 
         namespace="System.Web.UI" 
         assembly="System.Web.Extensions, 
                   Version=1.0.61025.0, 
                   Culture=neutral, 
                   PublicKeyToken=31bf3856ad364e35"/>
  </controls>
</pages>

そしてあなたの.aspxページで次の行を使用してください -

<ajax:ScriptManager ID="ScriptManager1" 
                    EnablePageMethods="true" 
                    runat="server" />

これが問題の解決に役立つことを願っています。

于 2012-09-16T17:44:33.893 に答える
2

javascript 呼び出しで asmx メソッドを使用できるようにするには、[WebMethod] の代わりに、または [WebMethod] に加えて [ScriptMethod] を使用する必要があると思います。パラメータを取らずに機能する理由は、リクエストがメソッドを処理するために何も解析する必要がないためです。

[ScriptMethod] (および場合によってはクラス定義の [ScriptService]) で試して、違いが生じるかどうかを確認してください。

于 2012-05-18T19:05:53.917 に答える
1

問題は、Web.config でモジュール (IHttpModule) を有効にする必要があることです: ScriptModule-4.0. これはデフォルトで有効になっていますが、削除した可能性があります。興味がある場合は、マシン全体の Web.config ファイルでそれを探し、ローカルの Web.config から削除されていないかどうかを確認してください。その宣言は、system.webServer/modules (IIS >= 7 の場合) および system.web/httpModules (Visual Studio の組み込み Web サーバーまたは IIS < 7 の場合) の下にある必要があります。

于 2014-03-26T18:06:25.030 に答える
0

私が覚えていることから、呼び出しには3つのパラメーター(パラメーター、onsuccess、onfailure)が必要です。PageMethods.TestMethod("test parameter", OnCallSumComplete, OnCallSumError); を使用してみましたか?

于 2012-05-18T18:54:23.103 に答える