7

jQuery UIオートコンプリートを使用してresponseformateJSONを使用して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

私が受け取るエラーメッセージは次のとおりです(巨大なメッセージで申し訳ありませんが、それは重要かもしれません):

soap:ReceiverSystem.Web.Services.Protocols.SoapException:サーバーはリクエストを処理できませんでした。---> System.Xml.XmlException:ルートレベルのデータが無効です。1行目、位置1。System.Xml.XmlTextReaderImpl.Throw(Exception e)at System.Xml.XmlTextReaderImpl.Throw(String res、String arg)at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()atSystem.Xml.XmlTextReaderImpl。 ParseDocumentContent()at System.Xml.XmlTextReaderImpl.Read()at System.Xml.XmlTextReader.Read()at System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.Read()at System.Xml.XmlReader.MoveToContent()at System.Web.Services.Protocols.SoapServerProtocolHelper.GetRequestElement()のSystem.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.MoveToContent()

これは私のコードです:

$('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
    }

}

私は何が間違っているのですか?前もって感謝します :)

4

1 に答える 1

13

URLにメソッドの名前を含める必要があると思います。

/WebService/Member.asmx/GetMembers

Webサービスを使用するとき、私は常にルート(/ no ../)へのパスを設定するのが好きです。何らかの種類のURL書き換えを行っている場合、またはルーティングを使用している場合に役立ちます。

これは、JQueryからのWebサービスの呼び出しに関して読むのに適したブログ投稿です。http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

于 2010-04-16T07:42:26.853 に答える