我正在创建一条返回所有产品名称的路线。但是,使用javascript代码的代码是这样的:
getSku: function () {
return $.getJSON(Routing.generate(this.options.urls.get))
.promise();
},
因此,到目前为止,我无法从该响应中提取数据。如果我通过控制台登录此getSku,则会得到:
{state: ƒ, always: ƒ, then: ƒ, promise: ƒ, pipe: ƒ, …}
always:ƒ ()
done : ƒ ()
fail : ƒ ()
pipe : ƒ ( /* fnDone, fnFail, fnProgress */ )
progress : ƒ ()
promise : ƒ ()
state : ƒ ()
then :ƒ ( /* fnDone, fnFail, fnProgress */ )
__proto__:Object
当我删除.promise()时,我得到:
{readyState: 1, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
abort:ƒ ( statusText )
always:ƒ ()
complete:ƒ ()
done:ƒ ()
error:ƒ ()
fail:ƒ ()
getAllResponseHeaders:ƒ ()
getResponseHeader:ƒ ( key )
overrideMimeType:ƒ ( type )
pipe:ƒ ( /* fnDone, fnFail, fnProgress */ )
progress:ƒ ()
promise:ƒ ()
readyState:4
responseJSON:Array(5)
0:{id: 1, identifier: "test_1", label: "test_1"}
1:{id: 2, identifier: "1000000", label: "1000000"}
2:{id: 3, identifier: "1000001", label: "1000001"}
3:{id: 4, identifier: "1000002", label: "1000002"}
4:{id: 5, identifier: "1000003", label: "1000003"}
我需要某种方式来捕获该响应。但是我不知道该怎么抓。这是一个骨干的js。我一直在寻找各种解决方案,但我总是返回undefined。请帮我弄清楚如何获得这个json结果。谢谢。
答案 0 :(得分:1)
请尝试以下操作:
getSku: function () {
return $.getJSON(Routing.generate(this.options.urls.get))
.promise();
}
调用getSku()时,它将返回一个Promise对象。您需要等待诺言解决或失败,如下所示。
getSku().done((data) => {
console.log(data);
}).fail(() => {
console.log( "something went wrong" );
});
要了解有关承诺的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise