2010-04-16 11 views
7

Ich versuche, die jQuery UI Autocomplete zu verwenden, um mit einem Webservice mit responseformate JSON zu kommunizieren, aber ich kann dies nicht tun.JSON und jQuery.ajax

Mein Webservice wird nicht einmal ausgeführt, der Pfad sollte korrekt sein, da sich die Fehlermeldung nicht beklagen lässt.

Was mir auffällt, ist die Header, Antwort ist Seife, aber Anfrage ist JSON, soll es so sein?

Response Headersvisa källkod 
Content-Type application/soap+xml; charset=utf-8 


Request Headersvisa källkod 
Accept application/json, text/javascript, */* 
Content-Type application/json; charset=utf-8 

Die Fehlermeldung ist i erhalten wie folgt (sorry für die große Nachricht, aber es könnte von Bedeutung sein):

soap: ReceiverSystem.Web.Services.Protocols.SoapException: Server konnte zu Prozessanforderung. --- > System.Xml.XmlException: Daten auf der Stammebene sind ungültig. Zeile 1, Position 1 bei System.Xml.XmlTextReaderImpl.Throw (Exception e) bei System.Xml.XmlTextReaderImpl.Throw (String res, String arg) bei System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace() bei System. (Xml.XmlTextReaderImpl.ParseDocumentContent) bei System.Xml.XmlTextReaderImpl.Read() bei System.Xml.XmlTextReader.Read() bei System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.Read() bei System. Xml.XmlReader.MoveToContent() bei System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.MoveToContent() bei System.Web.Services.Protocols.SoapServerProtocolHelper.GetRequestElement() bei System.Web.Services.Protocols.Soap12Serve rProtocolHelper.RouteRequest() bei System.Web.Services.Protocols.SoapServerProtocol.RouteRequest (SoapServerMessage message) bei System.Web.Services.Protocols.SoapServerProtocol.Initialize() bei System.Web.Services.Protocols.ServerProtocolFactory.Create (Typ Typ, Httpcontext Kontext, Httprequest Anfrage, Httpresponse-Antwort, Boolean & abortProcessing) --- Ende der inneren Ausnahmestapelüberwachung ---

Dies ist mein Code:

$('selector').autocomplete({ 
    source: function(request, response) { 
       $.ajax({ 
        url: "../WebService/Member.asmx", 
        dataType: "json", 
        contentType: "application/json; charset=utf-8", 
        type: "POST", 
        data: JSON.stringify({prefixText: request.term}), 

        success: function(data) { 
         alert('success'); 
        }, 
        error: function(XMLHttpRequest, textStatus, errorThrown){ 
         alert('error'); 
        } 
       }) 
       }, 
    minLength: 1, 
    select: function(event, ui) { 

    } 
    }); 

Und mein WebService Aussehen so:

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.ComponentModel.ToolboxItem(false)] 
[ScriptService] 
public class Member : WebService 
{ 

    [WebMethod(EnableSession = true)] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public string[] GetMembers(string prefixText) 
    { 
     code code code 
    } 

} 

Was mache ich falsch? Vielen Dank im Voraus :)

Antwort

13

Ich glaube, Sie müssen die Namen der Methode zu Ihrer URL enthalten:

/WebService/Member.asmx/GetMembers

Wenn eine Webservice mit mir immer setzen will die Pfad zum root (/ no ../), kann es hilfreich sein, wenn Sie URLs neu schreiben oder Routing verwenden.

Hier ist ein guter Blogbeitrag zum Aufruf eines Webservice von JQuery. http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

+0

Natürlich !! Ich kann nicht glauben, dass ich das verpasst habe, entschuldige mich dafür, das nicht erkannt zu haben, bevor ich die Frage gestellt habe. Danke für Ihre Antwort! – Andreas

+0

Kein Problem, gerne helfen! Es sind diese kleinen und offensichtlichen Fehler, die die meiste Zeit für die Fehlersuche benötigen! – Paul

Verwandte Themen