Я работаю над фильтрами на пользовательской странице odoo website (используйте форму> выбрать> опция). Для этого я попытался сделать ajax вызов для отправки / получения данных без перезагрузки страницы (пользовательской) на веб-сайте odoo. Я протестировал несколько кодов, но ни один из них не работает. Вот мои контроллеры:
@http.route([
'/trainers',
], type='http', auth="public", website=True)
def trainers(self, **post):
partner_obj = request.env['res.partner']
partners = partner_obj.sudo().search([('trainer', '=', True), ('show_trainer', '=', True)])
values = {
'partners': partners,
'categs': request.env['training.catalogue'].search([], order="sequence"),
'current_page': 3,
}
return request.render("website_training.trainer", values)
Я пытался с этим jquery кодом:
odoo.define('website_training.trainers', function (require) {
"use strict";
var ajax = require('web.ajax');
$('#trainer-catlg li').click(function () {
$('#search-catlg').val($(this).attr("value"));
ajax.jsonRpc("/trainers", 'call', {
'catalg': $('#search-catlg').val(),
});
});
});
И получил эту ошибку: Функция объявлена способной обрабатывать запрос типа 'http', но вызвана с запросом type 'json' Моя вторая попытка с этим кодом:
$('#trainer-catlg li').click(function () {
$('#search-catlg').val($(this).attr("value"));
var data = {
'catalg': $('#search-catlg').val(),
}
$.ajax({
type: "POST",
url: "/trainers",
data: data,
success: null,
});
});
С этим последним контроллер даже не вызывается (я установил точку останова в контроллере для целей тестирования). Вы можете помочь мне? Есть ли другой способ сделать это? Другой вариант - поиграть с «display: none» с jquery и css, чтобы создать фильтры, но я думаю, что это не очень хорошо для производительности при больших данных.