2016-11-12 2 views
0

Когда я отправляю к моей веб-службы ASMX, возвращается эта ошибка:Ajax после возвращения ошибки

Невозможно создать тип «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; 
    } 

} 

ответ

3

Рискну предположить, что это вопрос несоответствие класса между вашими .asmx и .asmx.cs файлами.

На верхней части .asmx страницы, убедитесь, что ваш атрибут Class соответствует class в верхней части .asmx.cs страницы, например так:

Code-Behind

public class myService: System.Web.Services.WebService 

фронта конец

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

Это довольно распространенная привычка при использовании Visual Studio для создания новой веб-службы (которая имеет имя по умолчанию что-то вроде Service1.asmx), а затем переименуйте ее в MyService.asmx. Но важно отметить, что это не обновляет ссылки на класс вместе с именем файла, и поэтому это может вызвать головную боль в случае, если вы забудете.


EDIT: Пошел вперед и отредактировали вопрос, чтобы очистить код, только чтобы понять, вы фактически включили разметку страницы и код-сзади.

Как я и предполагал, ваши классы не совпадают. Посмотрите:

.asmx

Class="RoyalTours.AutoCompleteWebService" 

.asmx.cs

public class autocomp 
+0

да вы правы, я думаю, что я устал так Так что я не обратил внимание на мое имя класса спасибо за вашу помощь, это настоящий ответ .... –

+0

С удовольствием помог! – Santi

+0

Спасибо большое ... :) –

Смежные вопросы