在我提供的3部分中,如果查询该服务可以正常工作,那么一切看起来都不错。
/// <summary>
/// Summary description for AutoCompleteService
/// </summary>
[WebService(Namespace = "http://schemas")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class AutoCompleteService : BaseWebService
{
/// <summary>
/// Gets or sets the account finder service.
/// </summary>
public ICheckoutService CheckOutService { get; set; }
/// <summary>
/// Finds all addresses matching either the postcode or suburb given in the prefix text.
/// </summary>
/// <param name="prefixText">The prefix text.</param>
/// <param name="count">The count.</param>
/// <returns>Aray of address details</returns>
[WebMethod]
public string[] FindAddresses(string prefixText, int count)
{
//Check the parameters
if (count == 0) count = 10;
var suburbs = CheckOutService.FindMatchingForPartialAddress(prefixText);
return suburbs.Take(count).ToArray();
}
}
其次是javascript
<script language="javascript">
$(function () {
$("#postcode").autocomplete({
source: "AutoCompleteService.asmx/FindAddresses",
minLength: 1,
select: function (event, ui) {
$(this).val(ui.item.value);
}
});
});
</script>
其次是文本框
<asp:TextBox runat="server" name="postcode" id="postcode" ></asp:TextBox>
响应
<ArrayOfStringxmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns: xsd="http://www.w3.org/2001/XMLSchema"xmlns="http://schemas.forcetechnology.com.au/2009/04/Fulfilment"><string>ABBARIVER,WA,6280</string><string>ABBEY,WA,6280</string><string>ACTONPARK,WA,6280</string>string>ADAMSVALE,WA,6375</string></ArrayOfString>
好的,我进行了以下更改,谢谢大家为我指明正确的方向,并为我提供了一个起点,这也为我提供了错误消息,这对您有所帮助,因此在下面进行了修改。
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string[] FindAddresses(string prefixText)
{
//Check the parameters
var suburbs = CheckOutService.FindMatchingForPartialAddress(prefixText);
return suburbs.ToArray();
}
$(document).ready(function () {
$('[ID$=postcode]').live('keyup.autocomplete', function () {
$(this).autocomplete({
source: function (request, response) {
alert(request.term);
$.ajax({
url: '<%=ResolveUrl("AutoCompleteService.asmx/FindAddresses") %>',
data: "{ prefixText:'" + request.term + "'}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
response($.map(data.d, function (item) {
return {
label: item.split('-')[0],
val: item.split('-')[1]
}
}))
},
error: function (response) {
alert(response.responseText);
},
failure: function (response) {
alert(response.responseText);
}
});
},
select: function (e, i) {
},
minLength: 1
});
});
});
最佳答案
试试下面的代码。那对我有用。
$(document).ready(function () {
$('[ID$=txtLastname]').live('keyup.autocomplete', function () {
$(this).autocomplete({
source: function (request, response) {
$.ajax({
url: '<%=ResolveUrl("~/Resources/WebService.asmx/LastName") %>',
data: "{ 'prefix': '" + request.term + "'}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
response($.map(data.d, function (item) {
return {
label: item.split('-')[0],
val: item.split('-')[1]
}
}))
},
error: function (response) {
alert(response.responseText);
},
failure: function (response) {
alert(response.responseText);
}
});
},
select: function (e, i) {
},
minLength: 1
});
});
Web方法是
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string[] LastName(string prefix)
{
List<string> customers = new List<string>();
using (SqlConnection conn = new SqlConnection())
{
string connectionstring = CCMMUtility.GetCacheForWholeApplication();
conn.ConnectionString = connectionstring;
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "select distinct top(10) Lastname from tblusers where " +
"Lastname like '%'+ @SearchText + '%' order by Lastname";
cmd.Parameters.AddWithValue("@SearchText", prefix);
cmd.Connection = conn;
conn.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
customers.Add(string.Format("{0}", sdr["Lastname"]));
}
}
conn.Close();
}
return customers.ToArray();
}
}
关于c# - 自动完成不触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11773013/