在为我的组织开发自定义应用程序时,我试图请求访问该卡的个人的姓名和化身。我能够在没有任何问题的情况下获得个人的名字,但是当请求化身图像时,我会得到以下控制台错误:
Uncaught (in promise) Error: Invalid JSON response at XMLHttpRequest.d.onload (domo.ts:309:18)
我已经查看了domo.js代码,在对某些事情做了一些有限的理解之后,我发现它试图对返回的.png
进行JSON.parse
。
当检查选项卡时,我可以看到正确的图像被返回,但它不会被传递给应用程序。
下面是返回错误的函数:
d.onload = function() {
var e;
if( u(d.status) ) {
!["csv","excel"].includes(r.format) && d.response || i(d.response), "blob" === r.responseType && i(new Blob([d.response], { type:d.getResponseHeader("content-type") }));
var t = d.response;
try{
e = JSON.parse(t)
}
catch(e){
return void c(Error("Invalid JSON response"))
}i(e)
}else c(Error(d.statusText))
}
据我所知,e
指的是Domo环境,尽管我不能百分之百地肯定这一点。
注意:我现在转向堆栈溢出,因为我的组织仍然有开放的Domo支持票,已经超过2年了,没有回复,所以我不相信Domo会及时对这个问题做出回应。
更新:以下是称为-
function i(e,t,r,n,a) {
return r = r || {}, new Promise((function(i,c) {
var d = new XMLHttpRequest;
if (n?d.open(e,t,n):d.open(e,t), p(d,t,r), function(e,t) {
t.contentType ?
"multipart" !== t.contentType && e.setRequestHeader("Content-Type", t.contentType)
: e.setRequestHeader("Content-Type", o.DataFormats.JSON)
} (d,r), function(e) {
s && e.setRequestHeader("X-DOMO-Ryuu-Token", s)
} (d), function(e,t) {
void 0 !== t.responseType && (e.responseType = t.responseType)
} (d,r),
d.onload = function() {
var e;
if( u(d.status) ) {
!["csv","excel"].includes(r.format) && d.response || i(d.response), "blob" === r.responseType && i(new Blob([d.response], { type:d.getResponseHeader("content-type") }));
var t = d.response;
try{
e = JSON.parse(t)
}
catch(e){
return void c(Error("Invalid JSON response"))
}i(e)
}else c(Error(d.statusText))
},
d.onerror = function() {
c(Error("Network Error"))
}, a)
if (r.contentType && r.contentType !== o.DataFormats.JSON) d.send(a);
else {
var f = JSON.stringify(a);
d.send(f)
}
else d.send()
}))
下面是调用以获取图像的domo.js方法:
e.get = function(e, t) {
return i(o.RequestMethods.GET, e, t)
},
发布于 2022-06-14 20:44:39
@Skousini您可以通过直接将这个URL提供给<img>
标记的src属性(显然用相关信息替换查询params )来获取用户的化身:
<img src="/domo/avatars/v2/USER/846578099?size=300&defaultForeground=fff&defaultBackground=000&defaultText=D" />
本文档可在developer.domo.com:https://developer.domo.com/docs/dev-studio-references/user-api#User%20Avatar上查阅。
如果您想从端点中提取数据,则不必使用domo.js
。您可以使用axios或任何其他HTTP工具。domo.js
试图通过自动解析json来简化HTTP请求(因为大多数请求都是基于json的)。对于domo.get
可以在本文档中提供的数据格式,还有其他几个选项:https://developer.domo.com/docs/dev-studio-tools/domo-js#domo.get
https://stackoverflow.com/questions/72002965
复制相似问题