Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
отображение запроса USEL в виде запроса SQL

Автор BaceHРаздел Custom макросы

Ответов: 5
Просмотров: 2760
Последний ответ 11 Январь 2013, 19:48:58
от admin
Прошу помощи с usel - необходимо отфильтровать новости по кастомному полю

Автор AksukРаздел Шаблоны XSLT

Ответов: 11
Просмотров: 4524
Последний ответ 05 Март 2012, 23:01:29
от Aksuk
Вывод объектов каталога через USEL по элементу в справочнике

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 6
Просмотров: 2747
Последний ответ 20 Июль 2013, 20:31:56
от NOIRMAN
Выборка USEL с несколькими параметрами для одного поля

Автор sempl84Раздел Шаблоны XSLT

Ответов: 3
Просмотров: 1734
Последний ответ 29 Ноябрь 2012, 11:05:03
от niakriss
Вывод порядковый номер (нумерация) при usel выдачи

Автор atachРаздел Custom макросы

Ответов: 5
Просмотров: 2074
Последний ответ 25 Сентябрь 2013, 13:37:27
от admin

0 Пользователей и 1 Гость просматривают эту тему.

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
usel-поиск аяксом
« : 20 Март 2013, 17:02:57 »
Здравствуйте. Подскажите, пожалуйста, реально ли это? Мне необходимо организовать поиск объектов каталога по нескольким полям, при том не перезагружать страницу. Сделала через usel, но с ним только с перезагрузкой... нельзя както его по аяксу передать? или как то еще поиск сделать?

*

admin

  • *****
  • 2443
  • +172/-1
    • Просмотр профиля
Re:usel-поиск аяксом
« Ответ #1 : 20 Март 2013, 17:28:08 »
можно сделать ajax запрос по адресу вида usel://your_usel_file.json и система вам вернет json объект с ответом выборки и парсить её одно удовольствие

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:usel-поиск аяксом
« Ответ #2 : 20 Март 2013, 20:31:31 »
Там были некоторые проблем с отдачей данных в формате JSON с использованием .JSON
Я помню делал в итоге парсер XML.
Потом уже сам начал формировать JSON на API.

Точно не помню с чем был связан глюк -вроде бы если значения полей цифры, а потом буквы. Так что если будите передавать значения полей в виде "1.5 TSI", "1.5 TDI", а приходить будет "1.5" и "1.5" - так и должно быть, если не исправили. :)

Нашёл письмо ТП:
"Пытаюсь просмотреть содержимое usel выборки через json и вижу, что некоторые поля меняют своё значение."

Цитировать
Содержимое:


Объекты каталога
1.2


Объекты каталога
1.4


Объекты каталога
1.4 TSI


Объекты каталога
1.6

{
"page": {
"0": {
"id": 71,
"parentId": 94,
"link": "/catalogue/skoda/octavia1/octavia_rs/octavia/",
"is-active": "1",
"object-id": 633,
"object-guid": "",
"type-id": 109,
"type-guid": "",
"update-time": 1344514640,
"alt-name": "octavia",
"basetype": {
"id": 49,
"module": "catalog",
"method": "object",
"title": "Объекты каталога"
},
"name": 1,
"href": "/upage/71.json"
},
Ответ от ТП:
Цитировать
Извините за промедление с ответом.
Проблему воспроизвели на тестовом сайте. Информация о проблеме передана в отдел разработки под номером 0015910. Мы напишем Вам как только появится решение данной проблемы.
« Последнее редактирование: 20 Март 2013, 20:34:54 от Rodogor »

*

admin

  • *****
  • 2443
  • +172/-1
    • Просмотр профиля
Re:usel-поиск аяксом
« Ответ #3 : 20 Март 2013, 22:19:26 »
не встречался с таким, тут же проверил на первом же подвернувшемся сайте (версия 2.8.5.3) usel запрос через стандартный файл special-category-offersючьд, который выводил товары из категории с id = 50 (ну это в моем случае). Добавил в этот раздел товар с названием 1.5 TSI  и все прекрасно вывелось.

запрос выглядел так
http://mysite.ru/usel/special-category-offers/50.json
а результат был таким
{
"page": {
"0": {
"id": 111,
"parentId": 50,
"link": "/shop/televizory/1111/",
"is-active": "1",
"object-id": 574,
"object-guid": "",
"type-id": 78,
"type-guid": "catalog-object",
"update-time": 1354972743,
"alt-name": "1111",
"basetype": {
"id": 55,
"module": "catalog",
"method": "object",
"title": "Объекты каталога"
},
"name": "тестовый 1111",
"href": "/upage/111.json"
},
"1": {
"id": 212,
"parentId": 50,
"link": "/shop/televizory/chehol/",
"is-active": "1",
"object-id": 2683,
"object-guid": "",
"type-id": 78,
"type-guid": "catalog-object",
"update-time": 1363802958,
"alt-name": "chehol",
"basetype": {
"id": 55,
"module": "catalog",
"method": "object",
"title": "Объекты каталога"
},
"name": "1.5 TSI",
"href": "/upage/212.json"
}
},

"total": 6,
"module": "usel",
"method": "special-category-offers"
}

видимо причина была в частном особенностях

а проблемы бывают обчно при попытке работать с этим объектом если работать с ним через successful параметр функции jquery.ajax? то надо убирать в umi параметр show-generate-time = "1" в config.ini, иначе json получается не валидным... или можно обрабатывать json запрос через callback функцию, тогда время генерации не помеха, этот механизм используется в umi в скриптах для работы корзины без перезагрузки (см. файлы /js/client/basket.js и  файл /templates/demodizzy/js/basket.js/js/basket, особенно саму функцию replace , которая и является той самой callback функцией)

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:usel-поиск аяксом
« Ответ #4 : 20 Март 2013, 22:40:08 »
Эти тонкости я конечно знаю, callback давно освоил и даже очень хорошо.   Посмотрел как реализованы basket в client и site и сделал свои такие же модули, по весу уже превосходящие basket в разы. Всякие там выборки связанных товаров, рейтинги со звёздочками на ajax, комментарии, голосовалки какие-то, подписки всякие и т.п.....

Проблема реально имела место быть и даже umi признали это. Если сейчас решена, ну тем лучше

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:usel-поиск аяксом
« Ответ #5 : 21 Март 2013, 11:13:28 »
ой.. я неочень хорошо понимаю в jquery и ajax... только осваиваю по-тихоньку... написала вот такое... но оно не работает. В чем я ошибаюсь?

function okrug_search(){
$('#dep_search').click(function(){
//alert();
$.ajax({
url: 'http://имя_сайта/usel://getDeputySearch/145.json',
success: function(data) {
alert(data);
}
});
return false;
});

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:usel-поиск аяксом
« Ответ #6 : 21 Март 2013, 12:05:53 »
Надо смотреть отладчиком что происходит - не срабатывает onclick, не приходит ответ, что-то ещё....
firebug в помощь

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:usel-поиск аяксом
« Ответ #7 : 21 Март 2013, 12:10:05 »
все срабатывает.. return false; работает.. а сам аякс запрос не работает((
сделала так: заработало...

$.ajax({
url: 'http://zsrk.dev.interso.local/usel/getDeputySearch/145.json',
dataType:   'json',
success: function(data) {
res.res = data;
alert(JSON.stringify(res.res));
}
});

но теперь возникает вопрос как в этот url  еще запихнуть ?place=
после равно должна вставляться переменная с нужным мне значением

*

admin

  • *****
  • 2443
  • +172/-1
    • Просмотр профиля
Re:usel-поиск аяксом
« Ответ #8 : 21 Март 2013, 12:54:26 »
либо в url

url: 'http://zsrk.dev.interso.local/usel/getDeputySearch/145.json?place=111&some=222',

либо, если данные в какой-то форме, например в forme с id='form_id', то добавить параметр data в таком виде.
$.ajax({
url: 'http://zsrk.dev.interso.local/usel/getDeputySearch/145.json',
dataType:   'json',
                        data: jQuery('#form_id').serialize(),
success: function(data) {
res.res = data;
alert(JSON.stringify(res.res));
}
});
« Последнее редактирование: 21 Март 2013, 13:03:38 от admin »

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:usel-поиск аяксом
« Ответ #9 : 21 Март 2013, 13:36:27 »
вооо....))) спасибо большое))) второй вариант мне как раз и нужен был...

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:usel-поиск аяксом
« Ответ #10 : 22 Март 2013, 11:05:00 »
теперь еще 1 вопрос возник... если я хочу через usel передать запрос на uobject://id

сам id до этого был получен и записан в переменную ID...
как вэтот урл добавть эту переменную?

пробовала так, но не получилось...

$.ajax({
url: 'http://zsrk.dev.interso.local/uobject://.json',
dataType:   'json',
                        data: ID,
success: function(data) {
alert(JSON.stringify(data));
}
});

*

admin

  • *****
  • 2443
  • +172/-1
    • Просмотр профиля
Re:usel-поиск аяксом
« Ответ #11 : 22 Март 2013, 11:27:56 »
Цитировать
через usel передать запрос на uobject://id
usel и uobject это протоколы. И вызвать один протокол другим это не верно логически.

А если необходимо сделать вызов через json используя протокол uobject? подставив туда id из переменной, то делаем так:

$.ajax({
url: 'http://zsrk.dev.interso.local/uobject://'+ID+'.json',
dataType:   'json',
success: function(data) {
alert(JSON.stringify(data));
}
});

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:usel-поиск аяксом
« Ответ #12 : 22 Март 2013, 11:30:04 »
url: 'http://zsrk.dev.interso.local/uobject://'+ID+'.json'

А data пустое

Data это чтобы передать get-ом или post-ом. В адресной строке это выглядело бы как ?id=666&my_field1=555 и т.п.

Почитайте зачем используется data, про GET, POST и что за ?my_var= в адресной строке появляется. Это реально полезная инфа, если сталкиваетесь с этим

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:usel-поиск аяксом
« Ответ #13 : 22 Март 2013, 11:38:38 »
блин.. точно.. все, пора на выходные.. и jquery учить))) пасиб огромное))