【问题标题】:Ajax post return errorAjax 后返回错误
【发布时间】:2017-03-26 21:36:21
【问题描述】:

当我发布到我的 asmx Web 服务时,返回此错误:

无法创建类型“myProjectName.AutoCompleteWebService”。

我在 StackOverflow 和许多其他网站上尝试了所有答案,但没有一个适合我的情况。

JQuery

$("#txtSearchKeyWord").autocomplete({
   source: function (request, response) {
       $.ajax({
          url: "AutoCompleteWebService.asmx/IndentifySearch",
          data: "{ 'keyWord': '" + request.term + "','Lang': 'En' }",
          dataType: "json",
          type: "POST",
          contentType: "application/json; charset=utf-8",
          dataFilter: function (data) { return data; },
          success: function (data) {
                 $(currentElement).css({ "background": "rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box" });
                 response($.map(data.d, function (item) {
                     return {
                        value: item
                     }
                 }))
          },
          error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(textStatus);
          }
       });
  },
  open: function (event, ui) {
       //$(".ui-autocomplete").css("left", (parseInt($(".ui-autocomplete").css("left").replace("px", "")) - 114).toString() + "px");
  },
  minLength: 3,
  appendTo: "#Autocontainer"
});

ASMX

<%@ WebService Language="C#" CodeBehind="AutoCompleteWebService.asmx.cs" Class="RoyalTours.AutoCompleteWebService" %>

C#

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]

public class autocomp : System.Web.Services.WebService
{
   [WebMethod]
   public List<string> IndentifySearch(string keyWord)
   {
      string currentPageURL = HttpContext.Current.Request.Url.AbsolutePath;
      List<Package> olstPackage = null;
      olstPackage = new PackageRepository().SearchPackage(keyWord);
      List<string> olstResult = null;
      if (olstPackage.Count > 0)
      {
          olstResult = new List<string>();
          for (int indexCountry = 0; indexCountry < olstPackage.Count; indexCountry++)
          {
              olstResult.Add(olstPackage[indexCountry].KeyWord);

              if (olstPackage.Count <= 0)
              {
                  olstResult.RemoveAt(indexCountry);
              }
            }
       }
       return olstResult;
   }

}

【问题讨论】:

    标签: c# jquery asp.net ajax web-services


    【解决方案1】:

    我敢猜测这是您的 .asmx 和 .asmx.cs 文件之间的类不匹配问题。

    在您的.asmx 页面顶部,确保您的Class 属性与您的.asmx.cs 页面顶部的class 匹配,如下所示:

    代码隐藏

    public class myService: System.Web.Services.WebService
    

    前端

    <%@ WebService Language="C#" CodeBehind="myService.asmx.cs" Class="MyProject.MyService" %>
    

    如果使用 Visual Studio 创建一个新的 Web 服务(其默认名称类似于 Service1.asmx),然后将其重命名为 MyService.asmx,这是相当普遍的习惯。但重要的是要注意,这不会随文件名一起更新类引用,因此如果你忘记了它可能会导致头痛。


    编辑:继续编辑您的问题以清理代码,却发现您实际上已经包含了页面的标记和代码隐藏。

    正如我所怀疑的那样,您的课程不匹配。看看:

    .asmx

    Class="RoyalTours.AutoCompleteWebService"
    

    .asmx.cs

    public class autocomp
    

    【讨论】:

    • 是的,你是对的,我觉得很累所以我没有注意我的班级名称谢谢你的帮助这是一个真实的答案......
    • 很高兴有帮助!
    • 非常感谢... :)
    猜你喜欢
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2015-10-13
    相关资源
    最近更新 更多