gpt4 book ai didi

javascript - 无法使用resolve(arg) Javascript/Odoo 获取Ajax 结果

转载 作者:行者123 更新时间:2023-11-28 00:55:49 25 4
gpt4 key购买 nike

正如标题中提到的,当我将参数传递给resolve(args)时,我无法捕获Ajax请求的结果。相反,我得到了在resolve() 中传递的参数。

// kind of Ajax call in Odoo software
var d = new instance.web.Model('advanced.search')
.call('check_duplication', ['paul']).done(function (name) {
// expected name 'example', but got 'my_var' instead...
return name
});

d.resolve('my_var');

你能告诉我如何管理吗?

非常感谢。

PS:谢谢大家的所有答案。我会尝试更具体。我实际上扩展了一个对象,使用收到的参数来调用服务器端,然后等待结果。一旦我得到结果,我想调用 super 并传递新的参数。

MyObject.extend({
init: function(parent, data){
var d = instance.web.Model('advanced.search')
.call('check_duplication', [data]).done(function (name) {
// do stuff
return name
});
var newData = d;
this._super.apply(this, newData);
// super is called before my request is done so the new data are not sent to super.
}
});

所以我只想在请求完成时调用 super 。如果我将其缓存在像 var self = this 这样的变量中,那么如果我在完成回调的//do stuff 部分调用 self._super... ,它就不起作用。我收到一个错误,告诉我 self._super... 不是一个函数,它的行为就像父进程无论如何都不等我。

这就是为什么我尝试使用resolve来绕过这个问题。

最佳答案

当你进行ajax请求时,你一定不能调用.resolve根本不。 ajax 会为您完成此操作 - 当它完成时,它会使用其结果调用 resolve

捕获结果,您只需在传递给 done 的回调函数中使用它即可。或then :

var d = new instance.web.Model('advanced.search')
.call('check_duplication', ['paul']);

d.done(function (name) {
console.log(name); // here it is!
});

关于javascript - 无法使用resolve(arg) Javascript/Odoo 获取Ajax 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26240813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com