2009-07-27 12 views
0

多くの関連する質問がありましたが、jqueryを介してページメソッドにパラメータを渡すコードの簡単な例は見つかりませんでした。ASP.NETフォーム:jqueryを使用してasp.netにポストするパラメータを持つページメソッド

私はencosia.com(Daveのおかげです)でいくつかの例を見てきましたが、まだそれを稼働させることはできませんでした。これまでのコードは次のとおりです。

更新 - paramsを渡すコードがいくつか追加されましたが、それでも動作しません。

Test.aspxという:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>test page</title> 

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 

    <script type="text/javascript"> 
     $(document).ready(function() { 
     // Add the page method call as an onclick handler for the div. 
     $("#Result").click(function() { 
      var intxt = document.getElementById("<%= txtIn.ClientID %>").value; 
      var params = $.toJSON({ 'inStr': intxt }); 
      $.ajax({ 
      type: "POST", 
      url: "test.aspx/RunTest", 
      data: params, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) { 
       $("#Result").text(msg); 
      } 
     }); 
     }); 
     }); 
    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    <div id="Result">Click here</div> 
    <asp:TextBox ID="txtIn" runat="server"></asp:TextBox> 
    </form> 
</body> 
</html> 

とtest.aspx.vbで:

<WebMethod()> _ 
    Public Shared Function RunTest(ByVal instr As String) As String 
     Return "this is your string: " + instr 
    End Function 

更新:

RUNTESTは、上記menthodが呼び出されることはありません。しかし、私も持っている場合:

<WebMethod()> _ 
    Public Shared Function RunTest() As String 
     Return "no params here" 
    End Function 

次に、2番目のメソッドが呼び出されます。

私には何が欠けていますか?これは間違ったアプローチですか?

答えて

2

パラメータは大文字と小文字が区別されます。あなたの

var params = $.toJSON({ 'inStr': intxt }); 

は、メソッドのシグネチャと一致しません:

Public Shared Function RunTest(ByVal instr As String) As String 

それの残りの部分は正しく見えます。

私は一般に、$ .toJSONのような他のプラグインの代わりにusing json2.js' JSON.stringify() to serialize JSON on the client-sideを提案します。 json2.js 'APIは、新しいブラウザが実装しているブラウザ固有のJSONサポート(これまでIE8とFx3.5)のECMA標準に一致しています。したがって、JSON.stringify()を使用してオブジェクトをシリアライズする場合、それらのブラウザでより高速でネイティブな機能に自動的にアップグレードされます。

+0

@Dave Wardさん、ありがとうございました。私もそれにこだわって、大文字と小文字を区別して問題を解決しました。どうもありがとう!。 –

関連する問題