【问题标题】:JavaScript XML-RPC call not executingJavaScript XML-RPC 调用未执行
【发布时间】:2016-12-07 10:28:30
【问题描述】:

我正在尝试使用我的 html 文件中的 javascript 调用 python 方法。下面是我的html文件:

<html>
<head>
<title>Gadget</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript" src="xmlrpc.js"></script>
</head>
<body>

<button onclick="call()">Select</button>
<script>
function call() {
        $.xmlrpc({
            url: 'my_odoo_server',
            methodName: 'web_login',
            params: ['admin', 'i-011d151e9af5b5588'],
            success: function(response, status, jqXHR) {
        console.log(response)
},
            error: function(jqXHR, status, error) {}
        });
}
</script>
</body>
</html>

但是 xml-rpc 调用没有完全执行。请帮忙解决这个问题。

这是控制台图像。

enter image description here

【问题讨论】:

  • 有什么错误吗?
  • 我添加了我的控制台图像。请检查。
  • 您的代码没有任何错误。在我的服务器上发送请求,我得到了没有问题的响应。尽管我收到“Access-Control-Allow-Headers”错误,但发送另一个是正常的。 “Access-Control-Allow-Headers”是您的问题吗?
  • 现在我看到了你的补充。你的问题是CORS。查看此资源“developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS”。您必须设置响应服务器(“my_odoo_server”)以允许“跨域”请求。

标签: javascript cross-domain openerp xml-rpc


【解决方案1】:

首先,您应该在 base.xml 文件中扩展视图,例如:

<t t-extend="ListView.buttons">
t t-jquery=".oe_list_buttons" t-operation="append">
    <button type="button" oe_button oe-c1>My button</button>
 </t>

然后你从 js 调用你的函数:

var $c_1_button = this.$buttons.find(".oe-c1");

    $c_1_button .click(function() {

            var mod=new instance.web.Model("your.model");
             mod.call("your_python_function",[params],{}).done(function(res) { });

【讨论】:

  • 我无法对我的服务器文件进行任何更改。我必须使用 javascript xml-rpc 调用来调用 odoo 登录方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 2012-02-27
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多