0

我见过很多相关的问题,但我没有找到一个简单的代码示例,它通过 jquery 将参数传递回页面方法。

我已经浏览了 encosia.com 上的一些示例(感谢 Dave),但仍然无法使其正常工作。这是到目前为止的代码:

更新 - 添加了一些代码来传递参数,但它仍然无法正常工作。

测试.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 方法。但是,如果我也有:

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

然后调用第二种方法。

我错过了什么?这是错误的方法吗?

4

2 回答 2

2

参数区分大小写。您的

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

与方法签名不匹配:

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

其余的看起来是正确的。

我通常建议使用 json2.js 的 JSON.stringify() 在客户端序列化 JSON,而不是像 $.toJSON 这样的其他插件。json2.js 的 API 与 ECMA 标准相匹配,以支持较新的浏览器正在实现的浏览器原生 JSON 支持(到目前为止是 IE8 和 Fx3.5)。因此,如果您使用 JSON.stringify() 来序列化您的对象,它将自动升级到这些浏览器中更快的本机功能。

于 2009-07-29T00:48:35.480 回答
1

请参阅https://stackoverflow.com/questions/570962/jquery-ajax-form-submitting

您需要通过 ClientID 加载文本框。

于 2009-07-27T19:32:08.703 回答