0
工作我使用jQuery弄清楚如何使用autocomplete
。jQuery的:Ajax調用工作,並自動完成不與WCF
我有兩個輸入類型文本example
和example2
。 我只是想知道爲什麼它爲Ajax調用例如文本框而不是自動完成的方法上例題文本框。
這裏是WCF服務的接口:
[ServiceContract]
public interface IMyService
{
[WebInvoke(Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "getcompletions/q={q}&limit={limit}")]
List<String> GetCompletions(string q, string limit);
}
當我使用AJAX調用它工作得很好:
$(document).ready(function() {
var url = "http://localhost.:62138/";
var data = null;
/*
//this webservice call works for UriTemplate = "getcompletions/{q}"
$.ajax({
url: url + "MyService.svc/GetCompletions/" + $('#example').val(),
cache: false,
type: "GET", // http method
dataType: "json",
error: function (XMLHttpRequest, status, error) {
//alert("Error p1 s(" + status + ") e(" + error + ")");
},
success: function (msg, arg2, xhr) {
try {
if (msg !== null) {data = msg;}
else { alert("msg is null"); }
} catch (e) { alert("exception: " + e); }}
});
*/
//but this doesn't work
$('#example2').autocomplete(url + "MyService.svc/GetCompletions/");
});
這裏是小提琴手爲autocomplete
請求:
GET http://localhost.:62138/MyService.svc/GetCompletions/?q=apri&limit=150×tamp=1289668676175 HTTP/1.1
Accept: */*
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; .NET4.0E; .NET4.0C)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: localhost.:62138
下面是autocomplete
的結果提琴手失敗時:
HTTP/1.1 404 Not Found
Server: ASP.NET Development Server/10.0.0.0
Date: Sat, 13 Nov 2010 17:19:53 GMT
X-AspNet-Version: 4.0.30319
Content-Length: 1565
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Connection: Close
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Service</title>
<style>blabla....</style>
</head>
<body>
<div id="content">
<p class="heading1">Service</p>
<p>Endpoint not found.</p>
</div>
</body>
</html>
這裏是web.config中
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="MyConnectionString" connectionString="Data Source=(local);Initial Catalog=BRAZIL;Integrated Security=True;" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
</system.web>
<system.serviceModel>
<services>
<service name="YourCompany.Services.MyService"
behaviorConfiguration="anotherBehavior">
<endpoint address=""
behaviorConfiguration="endPointBehavior"
binding="webHttpBinding"
contract="YourCompany.Services.IMyService"/>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="endPointBehavior">
<!--post <enableWebScript/>-->
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="anotherBehavior">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>