Я пытаюсь использовать ajax для параметров автозаполнения. пользователь предполагает написать префикс, а AutoCompleteLabs получит его в качестве входных данных и вернет данные из таблицы. Сценарий JS отобразит параметры по возвращенным данным.
Моя проблема - при записи первого префикса он отображает результаты, как и ожидалось, но когда меняет префикс (или даже добавить символы) это ничего не делать.
Я борюсь с этим много времени - пожалуйста, помогите.
Сценарий:
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.0.min.js" type="text/javascript"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.9.2/jquery-ui.min.js" type="text/javascript"></script>
<link href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.9.2/themes/blitzer/jquery-ui.css"
rel="Stylesheet" type="text/css"/>
<script type="text/javascript">
$(document).ready(function () {
$("#txtLab").autocomplete({
source: function (request, response) {
$.ajax({
url: '/Admin/Snapshots/AutoCompleteLabs' ,
data: "{ 'prefix': '" + request.term + "'}",
dataType: "json",
type: "POST",
noCache: "True",
width: 262,
matchContains: "word",
scrollHeight: 220,
cacheLength: 0,
allowAdditions:true,
noResultsText:'No results found',
contentType: "application/json; charset=utf-8",
success: function (data) {
response($.map(data, function (item) {
return item;
}));
},
error: function (response) {
alert(response.responseText);
},
failure: function (response) {
alert(response.responseText);
},
select: function (e, i) {
$("#hfCustomer").val(i.item.val);
}
});
},
minLength: 1
});
});
</script>
Веб-метод:
public string AutoCompleteLabs(string prefix)
{
using (var db = new LabManagerDBDataContext())
{
db.LoadOptions = LoadOptionsLabManagerDB.Instance;
var labs = db.GetTable<Lab>();
var labsRecords = (from lab in labs
where lab.Name.StartsWith(prefix)
select lab.Name);
return JsonConvert.SerializeObject(labsRecords.ToArray());
}
}
HTML:
<input type="text" id="txtLab"/>
<input type="hidden" id="hfCustomer"/>
Спасибо!