我尝试使用新的REST API从HTTP适配器检索数据 这是我返回的一些JSON对象:
"items": [
{
"category": "category 1",
"produit": [
{
"id": "57",
"name": "this is my name",
"answer": [
{
"id": "146",
"answername": " answer 1",
"istrue": "0",
"questionid": "57"
},
{
"id": "147",
"answername": "answer 2",
"istrue": "0",
"questionid": "57"
}
]
}
]
}
]
当我使用WL.Client.invokeProcedure(invocationData, options);
调用该过程时,它可以正常工作。
var invocationData = {
adapter : 'AuthentificationAdapter',
procedure : 'getquestion',
parameters : [jsontab],
};
WL.Client.invokeProcedure(invocationData,{
onSuccess : $.proxy(function(data)
{
deferred.resolve(data.invocationResult.items);
},this),
onFailure : $.proxy(function(error)
{
deferred.reject(error);
},this)
});
return deferred.promise
但是当我使用REST API时,它会返回Failed to read the HTTP response
和Failed to parse JSON string
这是我的资源请求代码:
var resourceRequest = new WLResourceRequest("/adapters/AuthentificationAdapter/getquestion", WLResourceRequest.POST, 30000);
resourceRequest.setQueryParameters(jsontab);
resourceRequest.send().then(
$.proxy(function(data) {
deferred.resolve(data.responseJSON.items);
},this),
$.proxy(function(error) {
deferred.reject(error);
},this)
);
return deferred.promise;
REST API似乎不像WL.Client那样支持完整的JSON对象吗?
答案 0 :(得分:2)
WL.Client.invokeProcedure
会返回一个承诺,因此您应该使用以下内容(对于第一部分),而不是实现自己的承诺。
var invocationData = {
adapter : 'AuthentificationAdapter',
procedure : 'getquestion',
parameters : [jsontab],
};
return WL.Client.invokeProcedure(invocationData);
WLResourceRequest.send
也会返回一个承诺,因此您应该使用
var resourceRequest = new WLResourceRequest("/adapters/AuthentificationAdapter/getquestion", WLResourceRequest.GET, 30000);
resourceRequest.setQueryParameter('params', [jsontab]);
return resourceRequest.send();
注意您必须使用setQueryParameter
并且必须传递'params'
作为第一个参数,并且第二个参数包含适配器函数的所有参数。
仅供参考:我假设前两段代码都在函数内部,这就是为什么我像以前一样返回一个承诺。