jQuery don';t调用ASP.NET WebMethod

jQuery don';t调用ASP.NET WebMethod,jquery,asp.net,webmethod,Jquery,Asp.net,Webmethod,我知道有很多像这样的问题,但我就是不能用这些答案来解决我的问题 我有一个基本页面,上面有: <body> <form id="form1" runat="server"> <div id="Result"> <asp:ScriptManager ID="ScriptManager1" EnableScriptGlobalization="true" EnableScriptLocal

我知道有很多像这样的问题,但我就是不能用这些答案来解决我的问题

我有一个基本页面,上面有:

<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>
我快疯了,谢谢你的帮助:)

  • 从$.ajax请求中的url中删除~
  • 不需要ScriptManager//即使您没有更改也无所谓
  • search()
    函数放在
    (文档)之外。ready()
    函数//即使没有更改也无所谓
  • 更改
    $(“#txtSearch”).bind(“更改”,搜索)=>
    $(“#txtSearch”)。更改(搜索)//即使您没有更改也无所谓
  • 还要确保呈现相同的id
    txtSearch
    (如果使用母版页,则可能呈现不相同)。您可以使用
    在HTML标记中获取clientId。
  • 如果页面加载时DOM中存在
    txtSearch
    ,则无需使用
    bind
    函数。jQuery也更喜欢使用函数

    $( "#txtSearch" ).on( "change", search);
    

    remove~/从url中删除,使其成为url:“Search.aspx/GetRegion”并在WebMethod中返回字符串首先,从ajax url中删除波浪号(~)。这是针对服务器端ASP.Net的,在其他任何地方都不起作用。
    $( "#txtSearch" ).on( "change", search);