JSON和jQuery.ajax

And*_*eas 7 jquery json web-services jquery-ui jquery-autocomplete

我试图使用jQuery UI自动完成与一个带有responseformate JSON的web服务进行交流,但我无法这样做.

我的web服务甚至没有执行,路径应该是正确的,因为错误消息不会抱怨这个.

令我震惊的是标题,响应是肥皂但请求是json,它应该是这样的吗?

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
Run Code Online (Sandbox Code Playgroud)

我得到的错误消息如下(抱歉这个巨大的消息,但它可能很重要):

soap:ReceiverSystem.Web.Services.Protocols.SoapException:服务器无法处理请求.---> System.Xml.XmlException:根级别的数据无效.1号线,在System.Xml.XmlTextReaderImpl.Throw(例外五)在System.Xml.XmlTextReaderImpl.Throw(字符串RES,字符串ARG)在System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()在System.Xml.XmlTextReaderImpl位置1. ParseDocumentContent()在System.Xml.XmlTextReaderImpl.Read()在System.Xml.XmlTextReader.Read()在System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.Read()在System.Xml.XmlReader.MoveToContent()在System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.MoveToContent()在System.Web.Services.Protocols.SoapServerProtocolHelper.GetRequestElement()在System.Web.Services.Protocols.Soap12ServerProtocolHelper.RouteRequest()在System.Web.Services. Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage消息)在System.Web.Services.Protocols.SoapServerProtocol.Initialize()在System.Web.Services.Protocols.ServerProtocolFactory.Create(类型类型,HttpContext的上下文中,请求的HttpRequest,HttpResponse对象响应,布尔逻辑abortProcessing )---内部异常堆栈跟踪结束---

这是我的代码:

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

   }
  });
Run Code Online (Sandbox Code Playgroud)

我的webservice看起来像这样:

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

}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?提前致谢 :)

Pau*_*aul 13

我相信您需要在网址中包含方法的名称:

/WebService/Member.asmx/GetMembers

使用Web服务时,我总是喜欢设置根路径(/ no ../),如果您正在进行任何类型的URL重写或使用路由,这将非常有用.

这是一篇关于从JQuery调用web服务的好文章.http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/