2
<script type="text/javascript">
        $('#btnregister').click(function () {
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "fetchusers.asmx/RegUsers",
                data: "{ username: '" + $("#txtuser").val() + "name: '" + $("#txtname").val() + "'}",
                dataType: "json",
                success: function (data) {
                    alert("Successfully register");
                    $("#btnregclose").click();
                }
            });
        });
    </script>

<div id="registration">
        <fieldset>
            <legend>Registration Form</legend>
                <input id="txtuser" type="text" placeholder="Username" /><br />
                <input id="txtname" type="text" placeholder="Name" /><br />
                <input id="txtpass" type="password" placeholder="password" /><br />
                <input id="txtconfirmpass" type="password" placeholder="confirm password" /><br />
                <input id="btnregister" type="button" value="Register" />
                <input id="btnregclose" type="button" value="close" />
        </fieldset>
    </div>


[WebMethod]
        public string RegUsers(string username, string name)
        {
            string response = username + name;

            return response;
        }

私は Ajax Jquery の初心者で、それに関する知識を向上させるために演習を行っています。私の問題は、#btnregister をクリックしても機能しないことです。ajaxで渡したパラメータに問題があると思いますが、それが何かわかりません。

4

4 に答える 4

4

これを試して :

 $(document).ready(function () {
        $('#btnregister').click(function () {
            var obj = { username: $("#txtuser").val(), name: $("#txtname").val() };
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "fetchusers.asmx/RegUsers",
                data: JSON.stringify(obj),
                dataType: "json",
                success: function (data) {
                    alert("Successfully register");
                    $("#btnregclose").click();
                }
            });
        });
    });

これは私のローカル環境で機能しました。

于 2013-05-15T03:28:51.020 に答える
3

連結によって文字列を構築しようとする代わりに、次のようなことを行う方が簡単かもしれません:

$.ajax(url, {
    data: JSON.stringify({
        username: $("#txtuser").val(),
        name: $("#txtname).val()
    })
});

フィールドの 1 つにカンマがある場合に発生する可能性のあるタイプミスや問題を防ぎます。ただし、ie7 以前では json2.js ( github ) というファイルを含める必要があることに注意してください。

編集: また、Web サービスを手動で実行してみてください (URL を参照するか、ポスターを使用するなど)。404 またはサーバー エラーが発生している可能性は十分にあります。

編集パート 2: Firefox で ajax の問題をデバッグする良い方法は、ctrl-shift-k を使用して Web コンソールを開くことです。「ネット」が有効になっており、ドロップダウンで「ログ要求と応答本文」がチェックされていることを確認してください。このようにして、リクエストの出入りを確認できます。表示されない場合は、ajax ではなく、JavaScript に問題があります。

別の編集: また、クリック イベントが $(document).read(function() {}); にないことがわかります。ボタンがレンダリングされる前にクリック イベントをアタッチしている可能性があります。したがって、イベントは添付されておらず、ajax コードも実行されていません。

于 2013-05-15T03:25:42.850 に答える
1

この構文を使用してください....

data: "{ 'username': '" + $("#txtuser").val() + "', 'name': '" + $("#txtname").val() + "'}",
于 2013-05-15T03:16:18.633 に答える