【问题标题】:Ajax jquery passing multiple parameters web servicesajax jquery传递多个参数web服务
【发布时间】:2016-08-25 22:34:01
【问题描述】:
<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上传递的参数有问题,但我不知道它是什么。

【问题讨论】:

    标签: c# asp.net jquery


    【解决方案1】:

    试试这个:

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

    这在我当地的环境中有效。

    【讨论】:

      【解决方案2】:

      与其尝试通过连接来构建字符串,不如执行以下操作更容易:

      $.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”,并在其下拉列表中选中了“Log Request and Response Bodies”。这样您就可以看到发出和返回的请求。如果您没有看到,那么它是您的 javascript 的问题,而不是 ajax。

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

      【讨论】:

        【解决方案3】:

        使用这种语法....

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

        【讨论】:

        • 在webservice函数中添加断点然后检查是否有参数值...
        • 是的,我做到了。但它不会去 Webservice
        • 检查警报($("#txtuser").val());
        • 你知道在javascript中添加调试器吗.../
        • 那是什么?我应该把它放在哪里?
        【解决方案4】:

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

        [System.Web.Script.Services.ScriptService]
        

        【讨论】:

          猜你喜欢
          • 2023-03-28
          • 2010-11-27
          • 1970-01-01
          • 1970-01-01
          • 2015-08-24
          • 1970-01-01
          • 1970-01-01
          • 2011-04-21
          • 2010-12-27
          相关资源
          最近更新 更多