2012-02-14 9 views
3

Webフォーム内で、コードビハインドファイルでメソッドを呼び出すためのjQueryセットアップがあります。jQueryを使用して非静的メソッドをasp.netコードの背後で呼び出す方法

<script src="js/jquery-1.7.js" type="text/javascript"></script> 

    <script type="text/javascript"> 
     $(function() { 
      $("#newBtn").click(function() { 
       $.ajax({ 
        type: "POST", 
        url: "AJAXCaller.aspx/GetTimer", 
        data: "{}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        async: true, 
        cache: false 

       }); 
       return false; 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <a href="#" class="link1" runat="server">Click here</a><br /><br /> 
    <asp:LinkButton ID="newBtn" runat="server" Text="ASP Link" /> 
    <asp:Label ID="time_lbl" runat="server" /> 
    </div> 
    </form> 
</body> 

そして、私は、次のしている背後にあるコード内:

[WebMethod] 
     public void GetTimer() 
     { 
      time_lbl.Text = DateTime.Now.ToString(); 
     } 

私は、これは現在、現在の構文では動作しません実現しています。

静的に設定するとメソッドにアクセスできましたが、文字列または単一の値を返すだけではありません。 Webサービスにアクセスしてデータのコレクションを返すメソッドにアクセスしたいと思います。

私はメソッドを呼び出すことができ、上記のメソッドのようなUIのフィールドを更新できるように、このようなことを実行できるかどうかを知りたいと思います。サーバーサイドスクリプトと呼ばれるときは、日付フィールドの値?

ご意見ありがとうございます。

+0

あなたはWebMethod属性から返された値にAsp.NetのHiddenFieldを更新することができ、その後、あなたが他のコントロールからアクセスすることができます。 –

答えて

2

UIのフィールドをサーバー側から更新することができないため、すべてではありません。

aspxページでWebMethodを使用する代わりに、ajaxを使用して呼び出すことのできるWebメソッドを書き込む代わりに、Asp.Net Webサービスを使用します。

メソッドには、サービス応答を取得し、適切なセレクタでUIフィールドにアクセスして更新できるコールバックがあります。

例えば

$(function() { 
     $("#newBtn").click(function() { 
      $.ajax({ 
       type: "POST", 
       url: "AJAXCaller.asmx/GetTimer", 
       data: "{}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       async: true, 
       cache: false, 
       success: function(data){ 
        $("#ClientIdOftime_lbl").text(data); 
       } 

      }); 
      return false; 
     }); 
    }); 
+0

@ShankarSngoliありがとうございます。しかし、私はフィールド以上のものを更新したいのですが?あなたは私のサンプルごとにuiフィールドについて言及しますが、リピータ、グリッドなどにバインドされるオブジェクトのデータのコレクションを返すメソッドを参照する必要がある場合はどうなりますか? – rlcrews

+0

サーバーから任意のデータを返すことはできますが、リピーターへのデータソースとして使用することはできません。クライアント側にリピータはありません。それはすべての点です。 – ShankarSangoli

+0

UIのデータバインディングと更新を処理するためにサーバー上で呼び出されるメソッド内では、不可能でしょうか?私が達成したいのは、メソッドを呼び出してタスクを実行し、メソッドが(updatepanelを介して)コントロールをバインドして更新できるようにすることです。本質的には、ajaxイベントでポストバックが呼び出されますか? – rlcrews