Ajax jquery传递多个参数web服务

本文关键字:参数 web 服务 jquery Ajax | 更新日期: 2023-09-27 18:13:41

<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的参数有问题,但我不知道是什么

Ajax jquery传递多个参数web服务

try this:

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

与其尝试通过连接来构建字符串,不如这样做更容易:

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

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

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

编辑第2部分:在firefox中调试ajax问题的一个好方法是使用ctrl-shift-k打开web控制台。确保启用"Net",并在其下拉菜单中选中"日志请求和响应体"。这样您就可以看到发出和返回的请求。如果你没有看到一个,那么这是你的javascript的问题,而不是ajax。

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

使用此语法....

data: "{ 'username': '" + $("#txtuser").val() + "', 'name': '" + $("#txtname").val() + "'}",

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

[System.Web.Script.Services.ScriptService]