Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Виджет autocomplete (https://javascript.ru/forum/jquery/54558-vidzhet-autocomplete.html)

Nevermind 22.03.2015 19:44

Виджет autocomplete
 
Привет всем! Ребята помогите немного, я пока не очень разбираюсь в javascript и jQuery. Такая проблемка: поставил виджет autocomplete не могу понять как извлекать данные после обработки запроса на сервере.
Т.е. когда в методе обработки на сервере я возвращаю массив строк - все нормально работает(меню на страничке заполняется этим массивом).
Но мне надо передать не массив строк а массив объектов. Когда я это делать мой autocomplete пуст(выдает пустой список).
Собственно вопрос: как извлекать данные если я передаю не массив строк а массив объектов?(как на стороне клиента извлекать именно значения свойств объектов из которых состоит массив?).

Заранее благодарен!

Доп. информация:
проэкт на asp.net mvc 3
версия библиотеки jquery: 1.11.4 custom
браузер: Opera

рони 22.03.2015 19:53

Nevermind,
пример обьекта который должен возвращать ваш сервер и обработка такого обьекта
http://javascript.ru/forum/jquery/48...tml#post317509

Nevermind 22.03.2015 20:28

Не могу понять как используя Ваш пример получить данные. Там у Вас массив прямо в коде объявлен. А как мне присвоить то что приходит от сервера в переменную data?

рони 22.03.2015 20:45

Цитата:

Сообщение от Nevermind
А как мне присвоить то что приходит от сервера в переменную data?

пример http://javascript.ru/forum/jquery/51...tml#post338176

Nevermind 22.03.2015 21:08

рони,
поставил функцию из примера, поменял item.name на item.Title (Title - это одно из полей моего класса). Ничего не изменяется. Все тоже самое- просто выпадает пустая полосочка (пустое меню).

Nevermind 22.03.2015 21:33

рони, ладненько, спасибо большое за помощь! Буду разбираться, читать теорию.

рони 22.03.2015 21:37

Nevermind,
нужен живой макет

Nevermind 22.03.2015 22:40

У меня вот такой код на клиенте:

<input style="margin-left:50px;" type="text" id="searcher" data-autocomplete-source='@Url.Action("Search", "Home")' />



<script type="text/javascript">

$(function () {
alert("работает");
$("[data-autocomplete-source]").each(function () {
var target = $(this);
target.autocomplete({ source: target.attr("data-autocomplete-source") });



});

});


</script>


----------------------------------------------------------------------
'@Url.Action("Search", "Home")' - это адресс функции, которая генерирует данные на сервере. Вот код этой функции:


public ActionResult Search(string term)
{
//формирую список обьектов моего класса

List<SearchItem> result = new List<SearchItem>();



//основная выборка данных из базы данных с условием, которое получаем от клиента(string term)

var recordresults = _datamanager.Record.GetAllRecords().Where(x => x.Title.Contains(term) || x.Text.Contains(term))
.Take(5)
.ToList()
.Select(x => new RecordSearch(x));
if (recordresults.Any())
{

//добавление результатов в основной список, который будем отправлять клиенту
result.AddRange(recordresults);
}




//возвращаем данные клиенту
return Json(result, JsonRequestBehavior.AllowGet);
}

-----------------------------------------------------------------------





вот класс из экземпляров которого генерируется массив и отправляется клиенту:


public class RecordSearch: SearchItem
{
//Сущность Record(у нее есть поля Title,Id...)

Record Model;

//конструктор класса
public RecordSearch(Record model)
{
this.Model = model;
}

//ну и свойства

public override int Id {
get { return this.Model.Id_Record; }
}

public override string Title {
get { return Model.Text; }
}



public override string CssClass {
get { return "recordsearch"; }
}

public override string TypeName {
get { return "Статья:"; }

}


}
--------------------------------------------------------------
Просто я не могу понять как на jQuery достать данные из свойства обьекта, в какой функции это надо делать? Этот код будет работать если передавать не массив обьектов а массив строк. То есть на сервере все в порядке. На сколько я понял изначально в моем файле, который я скачал на сайте jQuery-ui 1.11.4.js там все уже прописано, все функции уже есть, только по умолчанию они расчитаны на массив строк. Как то так...

рони 22.03.2015 22:52

Nevermind,
не помогу ваш код мне неизвестен

Nevermind 23.03.2015 00:20

Все равно спасибо. Буду учить javascript. =)


Часовой пояс GMT +3, время: 00:28.