我正在搜索有关如何在odoo上创建json视图的文档,但是找到了小知识

我需要创建一个json视图以从javascript访问。

我正在尝试这样:

@http.route('/test/status/<name>', auth='public', type='json')
    def temp(self, name,**kwargs):

        return [{'status': 'test',
                 }]

JavaScript代码:
function check_status() {
    var name = $('#name').val();
    $.getJSON("/test/status/" + name +"/",
            function(data){
                var status = data.status;
                $('#msg').text(status);
    });
};

我收到以下错误:
<function temp at 0x7f1a8b7d5140>, /test/status/lego/: Function declared as capable of handling request of type 'json' but called with a request of type 'http'

请帮我卡住

[答案的编辑@ odoo_user2]
function json_function_name() {
        odoo.define('custom_webpage.my_js', function (require) {'use strict';
            var ajax = require('web.ajax');
            ajax.jsonRpc('/pa/get_models/' + variable_id, 'call', {}).then(function (data) {
                if (data.models == false) {
                } else {
                    // load models
                    for (var i = 0; i < data.models.length; i++) {
                        var opt = document.createElement('option');
                        opt.innerHTML = data.models[i][1];
                        opt.value = data.models[i][0];
                        sel_models.appendChild(opt);
                    }
                }
            });
        })
    }
}

这是我使用的javascript函数以及控制器:
@http.route('/pa/get_models/<brand_id>', auth='none', type='json',website=True)
def get_models(self,brand_id**kwargs):
    cr = http.request._cr
    res = utils.get_models(cr,int(brand_id))
    return {'models': res,}

最佳答案

代替$.getJSON在odoo8中使用openerp.jsonRpc和在odoo9中使用var ajax = require('web.ajax'); ajax.jsonRpc

09-10 11:06