无法读取属性apiRest

时间:2017-03-28 18:10:08

标签: javascript jquery json ajax woocommerce

我对这个api有疑问。

这是在html中

<div id="summary"></div>

这是在JS

var consuKey = "ck_b04aa6f288ee9a5495dee9c5db0a6b136350e005";
var consuSecr = "cs_1f98d389d0f9b47cd3200023864cf9b7cba50574";

function callurl() {
$.ajax({
   url: 'https://test.juand.org/wc-api/v2/reports/sales?',
   data:{
        filter: {period: "last_week"},
        consumer_key: consuKey,
        consumer_secret: consuSecr
    },
type: "GET",
dataType: "json"
})
.done(function(data){
JsonpCallback(data.reports)
})
.fail(function(data){
console.log("no");
})
}

function JsonpCallback(json) {
for (var i = 0; i < json.length; i++) {
$('#summary').append('<b>Descripción:</b> ' + json[i].total_sales + '<br />');
$('#summary').append('<hr />');
}
}

callurl();

我有以下错误

Uncaught TypeError: Cannot read property 'length' of undefined
    at JsonpCallback (VM2284:68)
    at Object.<anonymous> (VM2284:60)
    at fire (VM2283 jquery-2.2.4.js:3187)
    at Object.fireWith [as resolveWith] (VM2283 jquery-2.2.4.js:3317)
    at done (VM2283 jquery-2.2.4.js:8757)
    at XMLHttpRequest.<anonymous> (VM2283 jquery-2.2.4.js:9123)

这个想法是json(total_sales)的结果,但我仍然不明白为什么它给我错误,如果我使用

我调用JsonpCallback(data.reports)

JsonpCallback(data.sales)

不会给出任何结果

你能帮我找一个解决方案,谢谢!!

你可以在这里看到我的代码

Https://jsfiddle.net/JDLA1/a84v2x9w/2/

1 个答案:

答案 0 :(得分:1)

您拥有的JSON不是数组,因此没有.length。 你可以删除循环

function JsonpCallback(json) {
  $('#summary').append('<b>Descripción:</b> ' + json.total_sales + '<br />');
  $('#summary').append('<hr />');
}

此外,它是sales而非报告

.done(function(data){
    JsonpCallback(data.sales)
})

另一方面,json.totals是一个数组,所以如果你想迭代它,你会这样做:

for (var key in json.totals) {
    console.log("key:", key, "value:", json.totals[key])
}