【问题标题】:WebMethod not being called未调用 WebMethod
【发布时间】:2011-11-07 22:36:42
【问题描述】:

我通过 jquery.ajax 将一个包含字符串的 javascript 变量传递给服务器。尽管调用了“成功”条件,但从不调用服务器端 WebMethod。客户:

 $.ajax({
            type: "post",
            url: "Playground.aspx/childBind",
            data: {sendData: ID},
            //contentType: "application/json; charset=utf-8",
            dataType: "text",
            success: function (result) { alert("successful!" + result.d); }
        })

服务器:

[WebMethod]
    public static string childBind(string sendData)
    {
        return String.Format("Hello");
    }

【问题讨论】:

    标签: c# asp.net jquery webmethod


    【解决方案1】:

    为您的 Ajax 请求尝试以下修复:

     $.ajax({
                type: "post",
                url: "Playground.aspx/childBind",
                data: "{sendData: '" + ID + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (result) { alert("successful!" + result.d); }
            })
    

    注意将dataTypedata 的值更改为字符串。

    【讨论】:

      【解决方案2】:

      我也遇到了同样的问题。谷歌搜索后,我找到了解决方案,它对我有用。导航到 RouteConfig.cs 并注释掉下面的行:

      public static class RouteConfig
      {
          public static void RegisterRoutes(RouteCollection routes)
          {
              var settings = new FriendlyUrlSettings();
              //settings.AutoRedirectMode = RedirectMode.Permanent;
              routes.EnableFriendlyUrls(settings);
          }
      }
      

      【讨论】:

        【解决方案3】:

        我想添加一个注释:您的“ID”(或其他字段)字符串包含像 = ' 这样的引号的数据错误。 解决这个问题:

        var DTO = {'sendData': ID};
        
                        $.ajax({
                            "type": "POST",
                            "dataType": 'json',
                            "contentType": "application/json; charset=utf-8",
                            "url": sSource,
                            "data": JSON.stringify(DTO),
                            "success": function (msg) {
                                //do something
                            }
                        });
        

        【讨论】:

          【解决方案4】:

          试试这样: jQuery:

                          var dataString = JSON.stringify({
                              contractName: contractName,
                              contractNumber: contractNumber
                          });
          
                          $.ajax({
                              type: "POST",
                              url: "CreateQuote.aspx/GetCallHistory",
                              data: dataString,
                              contentType: "application/json; charset=utf-8",
                              dataType: "json",
                              success: function (result) {
                                  alert(result);
                                      OpenLightBox('divDelete');
          
                              }
                          });
          

          ASPX.CS:

                  [System.Web.Services.WebMethod]
                  public static string GetCallHistory(string contractName, string contractNumber)
                  {
                      return "Nalan";
                  }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-11-26
            • 2021-01-31
            • 1970-01-01
            • 2023-03-12
            • 1970-01-01
            相关资源
            最近更新 更多