2012-01-10 11 views
1

最初に表示される登録フォーム(Default.aspx)は2つのフィールドとボタン(名前、電子メール)です。ユーザーがクリックするとJqueryがAjaxを呼び出すDefault.aspx.cs関数を呼び出します。そのフォームが展開され、登録フィールドが追加されます。Jquery AjaxからDefault.aspx.csページメソッドを呼び出す方法は?

は私がDefualt.aspx.cs に電話をかけることができないのです、私のDefault.aspxのコードは次のとおりです。

<script type="text/javascript"> 
     $(document).ready(function() { 
      $('#btnDownload').click(function() { 
       //$('#secondary').toggle(1000) 
       $.ajax({ 
        type: "POST", 
        url: "Default.aspx/PassData", 
        data: "{}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: AjaxSucceeded, 
        error: AjaxFailed 
       }); 
      }); 
      function AjaxSucceeded(result) { 
       alert(result.d); 
      } 
      function AjaxFailed(result) { 
       alert('Failed'); 
      } 
     }); 

    </script> 

とDefault.aspx.csは、(テスト目的のために)です:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    private static string PassData(string id) 
    { 
     return "Pass"; 
    } 
} 

しかし、私は、コードを実行し、すべての時間がJSはエラーを返します。ヘクタール

Uncaught ReferenceError: com is not defined 
POST http://localhost:2305/temp/Default.aspx/PassData 500 (Internal Server Error) 

私はいくつかの記事が、それらの非をチェックdは答えられた/解決された。

どんな種類のヘルプが高く評価されます。あなたは[WebMethod属性]属性を持つメソッドを飾るために必要な事前

+0

サーバーのエラーは何ですか?もしそれが '500'を返すなら、おそらくどこかでエラーに関するより多くの情報があります。アプリケーションログ、イベントビューア、レスポンスのボディなど – David

+0

こんにちは@デビッド:詳細は次のとおりです。 POSTます。http:// localhostを:2305/TEMP/Default.aspxの/ PassData 500(内部サーバーエラー) f.support .ajax.f.ajaxTransport.sendjquery-1.7.1.min.js:4 f.extend.ajaxjquery-1.7.1.min.js:4 (匿名関数)Default.aspx:14 f.event.dispatchjquery -1.7.1.min.js:3 f.event.add.h.handle.ijquery-1.7.1.min.js:3 – Vishal

+0

これはクライアント側のエラーです。 '500'応答はサーバがエラーを検出したことを意味します。そのエラーには有用な情報が含まれている可能性があります(エラーはあまりありません)。 – David

答えて

3

感謝。あなたがのScriptManagerを追加し、いくつかのASP.NET AJAXフレームワークのメソッドを使用する必要があります

EDIT

。すぐに使える機能では、あなたがしたいことは不可能だと思います。

1つのオプションは、これらのメソッドを処理するHttpHandlerを作成することです。リクエストがPOSTの場合、URLからページタイプを見つけることができます(フレームワークにメソッドがありますが、どちらを覚えておかなければならないのでしょうか?)、新しいインスタンスを作成し、そのメソッドがWebMethod(またはあなたが好きな別の属性)。そうであれば、リフレクションを使用して呼び出すことができ、結果をレンダリングできます。

EDIT

@Antony Highskyが指摘したように、それが可能です。私は解決策は[WebMethod]属性を追加し、メソッドをpublicにすることだと思います(例では非公開です)。

+2

さらに、EnableSessionパラメータがあり、trueに設定する場合としない場合があります。 – Fammy

+0

私は[WebMethod(EnableSession = true)]を入れようとしましたが、運がなくても同じエラーに応答します。 – Vishal

+0

小さなチュートリアルはこちらhttp://geekswithblogs.net/frankw/archive/2008/03/13/asp.net-ajax-callbacks-to-web-methods-in-aspx-pages.aspx – ivowiblo

関連する問題