繁体   English   中英

如何从 JS 文件调用 Odoo 控制器函数

[英]How to call an Odoo Controller function from JS file

我从 JS 文件中设置了一个 keyDown 调用 Py 文件中的一个函数

这是我的 JS 文件

_onKeydown_searchText: function () {
    var self = this;
    var search = {};
    search.Input = self.$('#text_input').val().trim();
    if (event.keyCode == 13 && search.Input) {
        return this._rpc({
        route: '/some/route',
        params: { search: search.Input }
        }).then(function (data) {
        console.log(data);
        self._result = data;
        })
    }
},

这是我的 Py 功能

@http.route('/some/route/', website=True, auth='public', csrf=False)
    def get_data(self, **kw):
        print(kw)
        condition = kw['search']
        sql = """
            select name from res_partner where phone = '%s' or email = '%s'
        """ % (condition, condition)
        http.request.cr.execute(sql)
        result = http.request.cr.fetchall() or []
        data = []
        list(data)
        for x in result:
            temp = ''.join(x)
            data.append(temp)
        return http.request.render("search_vip_route.get_data", {
            'data': data
        })

但我收到了这个错误:
/some/route: 函数声明为能够处理“http”类型的请求,但使用“json”类型的请求调用任何人都可以帮我解决这个问题

乐畅

您可以将JSON-RPC 中的值发送到您的Json 控制器中

JS文件

var ajax = require('web.ajax');
ajax.jsonRpc("/custom/url", 'call', {'Your Key': Your Value}).then(function(data) {
if (data) {
    // Code
} else {
   // Code
}});

Py File :像这样从帖子中获取数据。

@http.route(['/custom/url'], type='json', auth="public", website=True)
def custom_cotroller(self, **post):
    get_data = post.get('Your Key')
    # Your Customise Code

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM