簡體   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