JSON 和 jQuery.ajax

标签 json jquery-ui web-services jquery jquery-autocomplete

我尝试使用 jQuery UI 自动完成功能与带有响应格式 JSON 的 Web 服务进行通信,但我无法这样做。

我的网络服务甚至没有执行,路径应该是正确的,因为错误消息没有提示这一点。

令我印象深刻的是 header ,响应是soap,但请求是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

我收到的错误消息如下(很抱歉消息太大,但它可能很重要):

soap:ReceiverSystem.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.Xml.XmlException:根级别的数据无效。第 1 行,位置 1。 在 System.Xml.XmlTextReaderImpl.Throw(异常 e) 在 System.Xml.XmlTextReaderImpl.Throw(字符串 res,字符串 arg) 在 System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace() 在 System.Xml.XmlTextReaderImpl.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 响应、 bool 值和 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) {

   }
  });

我的网络服务如下所示:

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

}

我做错了什么?预先感谢:)

最佳答案

我认为您需要在 URL 中包含方法名称:

/WebService/Member.asmx/GetMembers

使用网络服务时,我总是喜欢将路径设置为根目录(/no ../),如果您正在进行任何类型的 URL 重写或使用路由,这会很有帮助。

这是一篇关于从 JQuery 调用 Web 服务的优秀博客文章,值得一读。 http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

关于JSON 和 jQuery.ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2651248/

相关文章:

json - 我可以使用 Scala Lift-json 库将 JSON 解析为 Map 吗?

javascript - Angular 4 : how do access local json?

jquery ui datepicker dateFormat 未按预期工作

Jquery绘制流程图

.NET WSDL 生成 xs :choice name the Choice Binding Enums

javascript - 同一依赖项/服务的多次导入

json - 如何使用 swiftJson 和 Alamofire 解析 json 数据

javascript - 如何使用扩展组合两个 JSON 并返回它们?

javascript - 如果拖放太快,则不会调用可排序的放置处理程序

php - SOAP 网络服务不仅仅适用于 IOS 设备,它适用于 soap ui 和 Android 设备