2010-04-16 13 views
7

Estoy tratando de usar la autocompletar de jQuery UI para comunicarme con un servicio web con responseformate JSON, pero no puedo hacerlo.JSON y jQuery.ajax

Mi servicio web ni siquiera se ejecuta, la ruta debe ser correcta ya que el mensaje de error no se queja de esto.

Lo que me sorprende son los encabezados, la respuesta es jabón, pero la solicitud es json, ¿se supone que es así?

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 

El mensaje de error que consigo es la siguiente (lo siento por el gran mensaje, pero podría ser de importancia):

jabón: ReceiverSystem.Web.Services.Protocols.SoapException: El servidor no pudo solicitud de proceso. --- > System.Xml.XmlException: los datos en el nivel raíz no son válidos. Línea 1, posición 1. en System.Xml.XmlTextReaderImpl.Throw (Exception e) en System.Xml.XmlTextReaderImpl.Throw (res String, String arg) en System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace() al sistema. Xml.XmlTextReaderImpl.ParseDocumentContent() en System.Xml.XmlTextReaderImpl.Read() en System.Xml.XmlTextReader.Read() en System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.Read() en Sistema. Xml.XmlReader.MoveToContent() en System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.MoveToContent() en System.Web.Services.Protocols.SoapServerProtocolHelper.GetRequestElement() en System.Web.Services.Protocols.Soap12Serve rProtocolHelper.RouteRequest() en System.Web.Services.Protocols.SoapServerProtocol.RouteRequest (mensaje SoapServerMessage) en System.Web.Services.Protocols.SoapServerProtocol.Initialize() en System.Web.Services.Protocols.ServerProtocolFactory.Create (tipo tipo, HttpContext contexto, HttpRequest petición, la respuesta HttpResponse, Boolean & abortProcessing) --- final de seguimiento de pila de excepción ---

Este es mi código:

$('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) { 

    } 
    }); 

Y mi aspecto webservice como este:

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

} 

¿Qué estoy haciendo mal? Gracias de antemano :)

Respuesta

13

creo que es necesario incluir el nombre del método a su URL:

/WebService/Member.asmx/GetMembers

Al utilizar un servicio web siempre me gustaría establecer el ruta a la raíz (/ no ../), puede ser útil si está haciendo algún tipo de reescritura de URL o usando el enrutamiento.

Aquí hay una buena publicación de blog para leer en lo que respecta a llamar a un servicio web de JQuery. http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

+0

Ofcourse !! No puedo creer que me perdí eso, me disculpo por no reconocer eso antes de hacer la pregunta .. Gracias por su respuesta! – Andreas

+0

¡No hay problema, feliz de ayudar! ¡Son esos pequeños y obvios errores los que toman más tiempo para resolver problemas! – Paul

Cuestiones relacionadas