2010-04-16 40 views
7

即時通訊嘗試使用jQuery UI自動完成與responseformate JSON進行通信,但我無法這樣做。JSON和jQuery.ajax

我的webservice甚至沒有執行,路徑應該是正確的,因爲錯誤消息不會抱怨這個。

什麼打擊我是頭,響應是肥皂,但請求是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 

錯誤消息我得到的是如下(抱歉巨大的消息,但它可能是重要的):

肥皂:ReceiverSystem.Web.Services.Protocols.SoapException:服務器無法處理請求。 --- > System.Xml.XmlException:根級別的數據無效。行1,位置1在 System.Xml.XmlTextReaderImpl.Throw(例外五) 在System.Xml.XmlTextReaderImpl.Throw(字符串RES,字符串ARG) 在System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace() 在系統。 Xml.XmlTextReaderImpl.ParseDocumentContent() 在System.Xml.XmlTextReaderImpl.Read() 在System.Xml.XmlTextReader.Read() 在System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.Read() 的系統。 Xml.XmlReader.MoveToContent() 在System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.MoveToContent() 在System.Web.Services.Protocols.SoapServerProtocolHelper.GetRequestElement() 在System.Web.Services.Protocols.Soap12Serve rProtocolHelper.RouteRequest() at System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message) at System.Web.Services.Protocols.SoapServerProtocol.Initialize() at 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) { 

    } 
    }); 

和我的web服務的外表像這樣:

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

} 

我在做什麼錯?感謝提前:)

回答

13

我相信你需要包括方法的名稱,以您的網址:

/WebService/Member.asmx/GetMembers

當使用Web服務,我總是喜歡設置(/ no ../)的路徑,如果您正在進行任何類型的URL重寫或使用路由選擇,這會很有幫助。

這是一篇很好的博客文章,關於從JQuery調用Web服務的問題。 http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

+0

當然!我不能相信我錯過了,我道歉沒有意識到之前我問的問題.. 感謝您的回覆! – Andreas 2010-04-16 07:48:06

+0

不是問題,樂意幫忙!這些小而明顯的錯誤會花費大量時間來解決問題! – Paul 2010-04-16 07:50:45