2016-11-12 3 views
0

Wenn ich es zu meinem asmx Webservice, dieser Fehler zurückgegeben:Ajax Post Rückkehr Fehler

nicht Typ erstellen konnte 'myProjectName.AutoCompleteWebService'.

Ich habe versucht, alle Antworten in StackOverflow und vielen anderen Websites, aber niemand arbeitet in meinem Fall.

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; 
    } 

} 

Antwort

3

Ich wage zu erraten, dass dies eine Frage der eine Klassenkonflikt zwischen Ihren .asmx und .asmx.cs Dateien.

Auf der Oberseite Ihrer .asmx Seite, stellen Sie sicher, dass Ihr Class Attribut die class an der Spitze Ihrer .asmx.cs Seite passt, etwa so:

-Code-Behind

public class myService: System.Web.Services.WebService 

Vorder Ende

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

Es ist eine ziemlich häufige Angewohnheit, wenn Sie Visual Studio verwenden, um einen neuen Webdienst zu erstellen (der den Standardnamen Service1.asmx hat), und ihn dann in MyService.asmx umbenennen. Aber es ist wichtig zu beachten, dass dies nicht die Klassenreferenzen zusammen mit dem Dateinamen aktualisiert, und so kann es zu Kopfschmerzen in dem Fall, dass Sie vergessen.


EDIT: ging voran und bearbeiten Ihre Frage um den Code zu bereinigen, nur erkennen Sie das Markup tatsächlich hatten für die Seite aufgenommen werden und die Code-Behind.

Genau wie ich vermutet habe, stimmen Ihre Klassen nicht überein. Werfen Sie einen Blick:

.asmx

Class="RoyalTours.AutoCompleteWebService" 

.asmx.cs

public class autocomp 
+0

ja du hast recht glaube, ich bin müde, so, damit ich nicht die Aufmerksamkeit für meine Klassennamen zahlen danke für deine hilfe das ist eine wahre antwort .... –

+0

Glücklich, geholfen zu haben! – Santi

+0

Vielen Dank ... :) –