2009-07-27 71 views
0

我見過很多相關的問題,但我找不到一個簡單的代碼示例,通過jquery將參數傳遞迴頁面方法。ASP.NET窗體:使用jquery發佈到帶有參數的asp.net頁面方法

我查看了一些在encosia.com上的例子(謝謝,戴夫),但仍然沒有設法讓它工作。以下代碼到目前爲止:

更新 - 添加了一些代碼傳遞參數,但它仍然無法正常工作。

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

參數區分大小寫。你

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

不匹配方法簽名:

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

它的其餘部分看起來是正確的。

我通常會建議using json2.js' JSON.stringify() to serialize JSON on the client-side,而不是其他插件,如$ .toJSON。 json2.js的API與新的瀏覽器正在實現的瀏覽器原生JSON支持(目前爲IE8和Fx3.5)的ECMA標準相匹配。因此,如果您使用JSON.stringify()來序列化對象,它將自動升級到這些瀏覽器中更快,本地化的功能。

+0

感謝@Dave Ward,我也試圖解決這個問題,並在使params區分大小寫之後解決了問題。非常感謝!。 – 2012-03-23 11:34:07

相關問題