Odoo 13: Как сделать ajax звонок в Odoo? - PullRequest
1 голос
/ 12 января 2020

Я работаю над фильтрами на пользовательской странице 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, чтобы создать фильтры, но я думаю, что это не очень хорошо для производительности при больших данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...