ASP.NET 表单:使用 jquery 发布到带有参数的 asp.net 页面方法

发布于 2024-07-29 10:40:25 字数 1927 浏览 8 评论 0原文

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

我已经浏览了 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 方法从未被调用。 但是,如果我也有:

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

那么将调用第二种方法。

我缺少什么? 这是错误的做法吗?

I've seen lots of related questions, but nowhere have I found a simple example of code that passes parameters back to a page method via jquery.

I've looked through some of the examples at encosia.com (thanks, Dave) but still haven't managed to get it working. Here's the code so far:

Updated - added some code to pass in params, but it's still not working.

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>

and in test.aspx.vb:

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

Update:

The RunTest menthod above is never called. However, if I also have:

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

Then the 2nd method IS called.

What am I missing? Is this the wrong approach?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情徒 2024-08-05 10:40:32

参数区分大小写。 您的

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

与方法签名不匹配:

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

其余部分看起来是正确的。

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

The parameters are case sensitive. Your

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

Doesn't match the method signature:

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

The rest of it looks correct.

I would generally suggest using json2.js' JSON.stringify() to serialize JSON on the client-side, instead of other plugins like $.toJSON. json2.js' API matches the ECMA standard for browser-native JSON support which newer browsers are implementing (IE8 and Fx3.5 so far). So, if you're using JSON.stringify() to serialize your objects, it will automatically upgrade to the faster, native functionality in those browsers.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文