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()
    })
});

如果您在某个字段中说逗号,它将防止可能发生的拼写错误/问题。但请注意,ie7 及更低版本将要求您包含一个名为 json2.js ( github ) 的文件。

编辑:另外,尝试手动执行您的网络服务(只需浏览到 url,使用海报等)。您完全有可能收到 404 或服务器错误。

编辑第 2 部分:在 firefox 中调试 ajax 问题的一个好方法是使用 ctrl-shift-k 打开 Web 控制台。确保启用了“Net”,并在其下拉列表中选中了“Log Request and Response Bodies”。这样您就可以看到发出和返回的请求。如果您没有看到,那么它是您的 javascript 的问题,而不是 ajax 的问题。

另一个编辑:另外,我看到你的点击事件不在 $(document).ready(function() {}); 可能是您在呈现按钮之前附加了单击事件。因此事件没有附加,你甚至没有执行 ajax 代码。

于 2013-05-15T03:25:42.850 回答
1

使用此语法....

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

问题中的代码是正确的,它需要简单的解决方案。转到 yourwebservice.asmx.cs 文件并取消注释在类级别给出的以下行,这将解决从 jQuery 或 Ajax 调用此 Web 服务的问题。

[System.Web.Script.Services.ScriptService]
于 2016-08-25T14:34:01.237 回答