首页 > 解决方案 > 从 JavaScript 结果中获取 responseJson

问题描述

我正在创建一条返回所有产品名称的路线。但是使用 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"}

我需要以某种方式捕捉该 responseJson 结果。但我不知道如何抓住它。它是一个骨干。我一直在寻找各种解决方案,但我总是返回未定义。请帮我弄清楚如何获得这个 json 结果。谢谢。

标签: javascriptjson

解决方案


尝试以下操作:

getSku: function () {
  return $.getJSON(Routing.generate(this.options.urls.get))
    .promise();
}

当您调用 getSku() 时,它会返回一个 Promise 对象。您需要等待 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


推荐阅读