Ir al contenido
Odoo Menú
  • Inicia sesión
  • Pruébalo gratis
  • Aplicaciones
    Finanzas
    • Contabilidad
    • Facturación
    • Gastos
    • Hoja de cálculo (BI)
    • Documentos
    • Firma electrónica
    Ventas
    • CRM
    • Ventas
    • PdV para tiendas
    • PdV para restaurantes
    • Suscripciones
    • Alquiler
    Sitios web
    • Creador de sitios web
    • Comercio electrónico
    • Blog
    • Foro
    • Chat en vivo
    • eLearning
    Cadena de suministro
    • Inventario
    • Manufactura
    • PLM
    • Compras
    • Mantenimiento
    • Calidad
    Recursos humanos
    • Empleados
    • Reclutamiento
    • Vacaciones
    • Evaluaciones
    • Referencias
    • Flotilla
    Marketing
    • Redes sociales
    • Marketing por correo
    • Marketing por SMS
    • Eventos
    • Automatización de marketing
    • Encuestas
    Servicios
    • Proyectos
    • Registro de horas
    • Servicio externo
    • Soporte al cliente
    • Planeación
    • Citas
    Productividad
    • Conversaciones
    • Aprobaciones
    • IoT
    • VoIP
    • Artículos
    • WhatsApp
    Aplicaciones externas Studio de Odoo Plataforma de Odoo en la nube
  • Industrias
    Venta minorista
    • Librería
    • Tienda de ropa
    • Mueblería
    • Tienda de abarrotes
    • Ferretería
    • Juguetería
    Alimentos y hospitalidad
    • Bar y pub
    • Restaurante
    • Comida rápida
    • Casa de huéspedes
    • Distribuidora de bebidas
    • Hotel
    Bienes inmuebles
    • Agencia inmobiliaria
    • Estudio de arquitectura
    • Construcción
    • Gestión de propiedades
    • Jardinería
    • Asociación de propietarios
    Consultoría
    • Firma contable
    • Partner de Odoo
    • Agencia de marketing
    • Bufete de abogados
    • Adquisición de talentos
    • Auditorías y certificaciones
    Manufactura
    • Textil
    • Metal
    • Muebles
    • Comida
    • Cervecería
    • Regalos corporativos
    Salud y ejercicio
    • Club deportivo
    • Óptica
    • Gimnasio
    • Especialistas en bienestar
    • Farmacia
    • Peluquería
    Trades
    • Personal de mantenimiento
    • Hardware y soporte de TI
    • Sistemas de energía solar
    • Zapateros y fabricantes de calzado
    • Servicios de limpieza
    • Servicios de calefacción, ventilación y aire acondicionado
    Otros
    • Organización sin fines de lucro
    • Agencia para la protección del medio ambiente
    • Alquiler de anuncios publicitarios
    • Fotografía
    • Alquiler de bicicletas
    • Distribuidor de software
    Descubre todas las industrias
  • Odoo Community
    Aprende
    • Tutoriales
    • Documentación
    • Certificaciones
    • Capacitación
    • Blog
    • Podcast
    Fortalece la educación
    • Programa educativo
    • Scale Up! El juego empresarial
    • Visita Odoo
    Obtén el software
    • Descargar
    • Compara ediciones
    • Versiones
    Colabora
    • GitHub
    • Foro
    • Eventos
    • Traducciones
    • Conviértete en partner
    • Servicios para partners
    • Registra tu firma contable
    Obtén servicios
    • Encuentra un partner
    • Encuentra un contador
    • Contacta a un consultor
    • Servicios de implementación
    • Referencias de clientes
    • Soporte
    • Actualizaciones
    GitHub YouTube Twitter LinkedIn Instagram Facebook Spotify
    +1 (650) 691-3277
    Solicita una demostración
  • Precios
  • Ayuda
Debe estar registrado para interactuar con la comunidad.
Todas las publicaciones Personas Insignias
Etiquetas (Ver todo)
odoo accounting v14 pos v15
Acerca de este foro
Debe estar registrado para interactuar con la comunidad.
Todas las publicaciones Personas Insignias
Etiquetas (Ver todo)
odoo accounting v14 pos v15
Acerca de este foro
Ayuda

Python controller not receiving payload from Javascript request

Suscribirse

Reciba una notificación cuando haya actividad en esta publicación

Se marcó esta pregunta
javascriptcontrollerpython3ajaxAPIOdoo19.0
2 Respuestas
797 Vistas
Avatar
Sofiware, Sofia Ingalls

This JavaScript code sends a POST request to a Python controller but the two values (name and country) are never received:


const apiBtn = document.querySelector('#api_btn');

if (apiBtn) {

​ apiBtn.addEventListener('click', () => {

​ ​ fetch('/api/proxy', {

​ ​ ​ method: 'POST',

​ ​ ​ headers: { 'Content-Type': 'application/json' },

​ ​ ​ body: JSON.stringify({ 'name': 'Gerhart', 'country': 'Germany' })

​ ​ })

​ ​ .then(res => res.json())

​ ​ .then(result => {

​ ​ ​ document.querySelector('#api_output').textContent = result.result.response;

​ ​ })

​ ​ .catch(err => console.error('proxy call failed:', err)); ​

​});

}


controller:

import requests

from odoo import http

from odoo.http import request


class MyController(http.Controller):

​ @http.route('/api/proxy', type='json', auth='user', methods=['POST'], csrf=False)

​ def api_proxy(self, name, country):

​ ​ resp = requests.post(

​ ​ 'https://apiserver.com/myapi.php',

​ ​ data={'name': name or '', 'country': country or ''},

​ ​ timeout=10

​ ​ )

​ ​ return resp.json()


The response from the API is received and relayed successfully back to the JavaScript code, but it's missing the two values.


If the two values are hardcoded into the data, the API receives the values and responds with them.

data={'name': 'Gerhart', 'country': 'Germany'}


Does Odoo 19 require some additional protocol?

0
Avatar
Descartar
Sofiware, Sofia Ingalls
Autor

@Codesphere: Thank you most kindly, for the suggestion and the ultimate solution. That resolved the issue perfectly.


@Kunjan Patel: Thank you, my friend. You're always there for me.

I do have to apologize again for replying like this, as commenting and upvoting are still not enabled for my newbie account.

AlexanderJBoyle

Thank you for sharing

Avatar
Codesphere Tech
Mejor respuesta

Hello,
Update your route type with jsonrpc

warnings.warn(
"Since 19.0, @route(type='json') is a deprecated alias to @route(type='jsonrpc')",
If required update below: (Sample code not tested):
fetch('/api/proxy', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({
                jsonrpc: "2.0",
                method: "call",
                params: {
                    name: "Gerhart",
                    country: "Germany"
                }
            })

        })
Hope it helps.

1
Avatar
Descartar
Avatar
Kunjan Patel
Mejor respuesta
Hello Sofia Ingalls
I hope you are doing well

Issue: type='json' is deprecated in Odoo 19. Controllers don't receive JSON payload from JavaScript.
Fix: Change type='json' → type='jsonrpc'


I hope this information helps you

Thanks & Regards,
Kunjan Patel

0
Avatar
Descartar
¿Le interesa esta conversación? ¡Participe en ella!

Cree una cuenta para poder utilizar funciones exclusivas e interactuar con la comunidad.

Registrarse
Publicaciones relacionadas Respuestas Vistas Actividad
POST form to controller with ajax, and submit data to websites Qweb template. Resuelto
javascript controller website ajax odoo10
Avatar
1
mar 21
20335
ajax.loadXML in odoo16 Resuelto
javascript upgrade ajax
Avatar
Avatar
1
jun 23
4212
How to add a new search filter while searching customers in POS web UI via JavaScript? Resuelto
javascript python3 odoo
Avatar
Avatar
Avatar
2
feb 23
4766
sending JSON data with 400 status
controller python3 odoo12
Avatar
0
jun 21
4418
How to get data from python controller using javascript
javascript json controller
Avatar
0
feb 21
4820
Comunidad
  • Tutoriales
  • Documentación
  • Foro
Código abierto
  • Descargar
  • GitHub
  • Runbot
  • Traducciones
Servicios
  • Alojamiento en Odoo.sh
  • Soporte
  • Actualizaciones del software
  • Desarrollos personalizados
  • Educación
  • Encuentra un contador
  • Encuentra un partner
  • Conviértete en partner
Sobre nosotros
  • Nuestra empresa
  • Activos de marca
  • Contáctanos
  • Empleos
  • Eventos
  • Podcast
  • Blog
  • Clientes
  • Legal • Privacidad
  • Seguridad
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk Slovenščina Español (América Latina) Español Svenska ภาษาไทย Türkçe українська Tiếng Việt

Odoo es un conjunto de aplicaciones de código abierto que cubren todas las necesidades de tu empresa: CRM, comercio electrónico, contabilidad, inventario, punto de venta, gestión de proyectos, etc.

La propuesta única de valor de Odoo es ser muy fácil de usar y estar totalmente integrado.

Sitio web hecho con

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now