0

このような質問がたくさんあることは知っていますが、それらの回答で問題を解決することはできません.

私は基本的なページを持っています:

<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 にステップ インできません。

Web メソッドは次のようになります。

[WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static void GetRegion()
    {
        SearchService.Service1 client = new Service1();

    }

私はこれに夢中になっているので、助けていただければありがとうございます:)

4

1 に答える 1

1
  1. $.ajax リクエストの URL から ~ を削除します。
  2. ScriptManager は不要 // 変更しなくても問題ありません
  3. search()function を function の外に置きます。//(document).ready()変更しなくても問題ありません
  4. Change $("#txtSearch").bind("change", search);=> $("#txtSearch").change(search);// 自分が変わらなくても構わない
  5. また、同じ IDtxtSearchがレンダリングされていることを確認してください (マスター ページが使用されている場合、同じようにレンダリングされない場合があります)。<%:txtSeacrh.ClientId%>HTML マークアップで clientId を取得するために使用できます。

bindページの読み込み中に DOM に関数が存在する場合は、関数を使用する必要はありません。またtxtSearch、jQuery はon代わりに関数を使用することを好みます。

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

jsフィドル

于 2013-11-06T11:18:24.010 に答える