Skip to Content
เมนู
คุณต้องลงทะเบียนเพื่อโต้ตอบกับคอมมูนิตี้
คำถามนี้ถูกตั้งค่าสถานะ
4 ตอบกลับ
3766 มุมมอง

Hi ,im on odoo 17, i want to call a controller method from "import_action.js" but i have this error : 

TypeError: this._rpc is not a function
    at ImportAction.handleImport (http://localhost:8069/web/assets/2ac37e4/web.assets_web.min.js:16212:142)

js : 
if (!isTest && res.ids.length) {
this.notification.add(_t("%s records successfully imported", res.ids.length), {
type: "success"
});
var self = this;
this._rpc({
route: '/bp/imported_checklists',
params: { checklist_records: res.ids }
}).then(function () {
self.exit(res.ids);
});
}


py:

@http.route('/bp/imported_checklists', website=True, auth='public', csrf=False)
def get_data(self, **kw):
res_ids = kw.get('res_ids')
if res_ids:
query_1 = """SELECT id FROM bp_cdc WHERE imported_checklist=True ORDER BY id LIMIT 1"""
http.request.env.cr.execute(query_1)
result_query_1 = http.request.env.cr.fetchone()
if result_query_1:
cdc_id = result_query_1[0]
query_2 = """UPDATE bp_checklist SET checklist_id=%s WHERE id IN %s"""
http.request.env.cr.execute(query_2, (cdc_id, tuple(res_ids)))
query_3 = """UPDATE bp_cdc SET imported_checklist=False WHERE id IN %s"""
http.request.env.cr.execute(query_3,cdc_id)
return {'success': True, 'message': 'Checklist updated successfully'}
else:
return {'error': 'No CDC record with imported_checklist=True found'}
else:
return {'error': 'No res_ids provided'}  

อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

$.ajax({

                url: "/your/controller",

                data: {'key' :value},

                cache: false,

                dataType:'json',

                success: function(data){ console.log(data) }

});

Try this method.

อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

Hi,

Please refer to our blog given below to understand how to call controller from js

How to Call Controller Method from Javascript


Hope it helps

อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

You can try this

อวตาร
ละทิ้ง

# my_module/controllers/main.py

from odoo import http

from odoo.http import request

class MyController(http.Controller):

@http.route('/my_module/get_data', type='json', auth='public', methods=['POST'], csrf=False)

def get_data(self):

# Sample data to return

data = {'message': 'Hello from Odoo Controller!'}

return data
Source: https://t-rexgame.io

คำตอบที่ดีที่สุด

You can take a look at https://github.com/odoo/odoo/blob/b9f0f3676a9409a991ff8bd3d06ba4ace8d567e8/addons/hr_attendance/static/src/components/attendance_menu/attendance_menu.js#L36

Just search the source code of odoo 17 and you will find a lot of these

Hope this help sir.


อวตาร
ละทิ้ง
Related Posts ตอบกลับ มุมมอง กิจกรรม
4
พ.ค. 25
9187
2
ธ.ค. 24
6354
3
เม.ย. 24
5878
1
ม.ค. 24
3887
0
มิ.ย. 21
3242