我已经看到了很多相关的问题,但我找不到一个简单的代码示例,它通过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 menthod。但是,如果我也有:
<WebMethod()> _
Public Shared Function RunTest() As String
Return "no params here"
End Function
然后调用第二个方法。
我错过了什么?这是错误的做法吗?
答案 0 :(得分: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支持的ECMA标准(到目前为止IE8和Fx3.5)。因此,如果您使用JSON.stringify()来序列化对象,它将自动升级到这些浏览器中更快的本机功能。
答案 1 :(得分:1)
请参阅https://stackoverflow.com/questions/570962/jquery-ajax-form-submitting
您需要通过ClientID加载文本框。