【问题标题】:How to call an Odoo Controller function from JS file如何从 JS 文件调用 Odoo 控制器函数
【发布时间】:2020-08-30 07:26:56
【问题描述】:

我从 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”类型的请求调用 任何人都可以帮我解决这个问题

【问题讨论】:

    标签: javascript python odoo


    【解决方案1】:

    乐昌

    您可以将值从 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 文件:像这样从帖子中获取数据。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      • 2017-08-22
      • 1970-01-01
      相关资源
      最近更新 更多