我知道有很多像这样的问题,但我无法用这些答案解决我的问题。
我有基本页面,上面有:
<body>
<form id="form1" runat="server">
<div id="Result">
<asp:ScriptManager ID="ScriptManager1"
EnableScriptGlobalization="true"
EnableScriptLocalization="true"
EnablePageMethods="true"
EnablePartialRendering="true" runat="server" />
<script type="text/javascript">
$(document).ready(function () {
$("#txtSearch").bind("change", search);
});
function test() {
alert("asdadadaads");
}
function search() {
$.ajax({
type: "POST",
url: "~/Search.aspx/GetRegion",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert(msg.d)
}
});
}
</script>
<asp:TextBox ID="txtSearch" runat="server"></asp:TextBox>
</div>
</form>
我可以调用测试功能并显示警报。同样在Firebug中,我看到也调用了search()函数,但我无法进入WebMethod背后的代码。
WebMethod是这样的:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static void GetRegion()
{
SearchService.Service1 client = new Service1();
}
我对此感到疯狂,所以,如果你能提供帮助,谢谢你。)
答案 0 :(得分:1)
search()
功能置于(document).ready()
功能之外。即使您没有更改也无关紧要$("#txtSearch").bind("change", search);
=&gt; $("#txtSearch").change(search);
//即使你没有改变也没关系txtSearch
(如果使用母版页,则可能无法呈现相同内容)。您可以使用<%:txtSeacrh.ClientId%>
在HTML标记中获取clientId。 如果页面加载时DOM中存在bind
,则无需使用txtSearch
函数。而且jQuery更喜欢使用on
函数。
$( "#txtSearch" ).on( "change", search);