2011-09-12 14 views
2

Ajax Auto Complete ExtenderをWebプロジェクトでホストされているWCFサービスで利用しようとしています。サービスに達し、結果がフィドラーで返されることが確認されましたが、オートコンプリートエクステンダーに関連付けられたテキストボックスには決してデータが入力されません。エクステンダーが自動生成されない

[ScriptService] 
[ServiceContract(Namespace = "")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
public interface ICertificateService 
{ 
    [System.Web.Services.WebMethod] 
    [System.Web.Script.Services.ScriptMethod] 
    [WebInvoke(Method = "POST", 
     BodyStyle = WebMessageBodyStyle.Wrapped, 
     ResponseFormat = WebMessageFormat.Json)] 
    List<string> GetCompletionList(string prefixText, int count); 
} 

実装は単なる文字列の人口のリストを返して次のように

サービス契約があります。次のように

ASPXである:

<asp:TextBox runat="server" ID="aceInstructors"></asp:TextBox> 
<ajaxToolkit:AutoCompleteExtender runat="server" 
            ID="autoCompleteInstructor" 
            TargetControlID="aceInstructors" 
            ServiceMethod="GetCompletionList" 
            ServicePath="../../CertificateService" 
            MinimumPrefixLength="1" 
            CompletionInterval="1000" 
            EnableCaching="true" CompletionSetCount="5"> 
         <Animations> 
          <OnShow> <HideAction Visible="true" /> </OnShow> 
          <OnHide> <HideAction Visible="false" /> </OnHide>  
         </Animations> 

次のようにサービスのルートがGlobal.asaxの中に構成されている:

private void RegisterRoutes() 
    { 
     RouteTable.Routes.Add(new ServiceRoute("CertificateService", new WebServiceHostFactory(), typeof(CertificateService))); 
    } 

述べたように、私がホットサービスする前JSON形式のレスポンスが得られます。以下は、生の応答です:

HTTP/1.1 200 OK 
Server: Cassini/4.0.1.7 
Date: Mon, 12 Sep 2011 16:44:16 GMT 
X-AspNet-Version: 4.0.30319 
Content-Length: 68 
Cache-Control: private 
Content-Type: application/json; charset=utf-8 
Connection: Close 

{"GetCompletionListResult":["Alpha","Beta","Gamma","Delta","Omega"]} 

注目におそらく価値のあるものは、私はサービス契約からResponseFormatを省略した場合、reultはXML形式で返され、テキストボックスが非常に長いリストが移入されていることです定義されていません

何か基本的なものがありませんか?

答えて

2

問題はhereに解決されました。私が解決する必要があった問題は、JSONがラップされて返される方法を中心にしているようでした。 ajaxツールキットのオートコンプリートエクステンダーは、JSONコンテンツが '.d wrapped'になると予想しています。これは、提供されたリンクの構成設定に従うことによって達成されました。

また、これらのweb.config設定を追加するAjax対応WCFプロジェクトテンプレートがあります。おそらく時間が節約されていることがわかっています。

関連する問題