【发布时间】:2018-07-18 00:34:34
【问题描述】:
我在尝试使用 $.grep 获取值时遇到问题
我向 url 发送一个 GET 请求,以将大量日期和值作为 JSON 带回。
然后,在回调函数中,我从 JSON 文件中获取日期和值,并使用延迟对象将结果分配给变量。
一旦 ajax 请求完成,我会遍历原始响应,然后使用 $.grep 过滤 json 变量以获得正确的值。
如果我控制台记录 $.grep 的结果,我会得到正确的值,但我会收到以下错误。
jQuery.Deferred 异常:无法读取未定义的属性“值” TypeError:无法读取未定义的属性“值”
如何从 $.grep 中获取值?
var history;
$.getJSON(window.website_url + 'history', function(response) {
var series = {
name: 'Price Index History',
data: []
};
var deferreds = [];
if($('#currency').val() === 'GBP') {
deferreds.push(
$.ajax({
url: window.website_url = 'exchange-rate',
type: 'get',
dataType: 'json',
success: function (data) {
history = data;
}
})
);
$.when.apply($, deferreds).done(function() {
$.each(response, function(i, item) {
var date = new Date(item[0]),
day;
if((date.getMonth() + 1) < 10) {
day = date.getFullYear() + '-' + '0' + (date.getMonth() + 1) + '-' + date.getDate();
}
else {
day = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();
}
var result = $.grep(history, function(e) { return e.date == day; });
var test = result[0].value;
series.data.push([item[0], Number(parseFloat(item[1] * result[0].value).toFixed(1))]);
});
});
}
else {
$.each(response, function(i, item) {
series.data.push([item[0], item[1]]);
});
}
});
编辑
Here is the json returned the ajax request
[
{
"date":"2018-01-30",
"value":0.706419
},
{
"date":"2018-01-31",
"value":0.70417
},
{
"date":"2018-02-01",
"value":0.70095
},
{
"date":"2018-02-02",
"value":0.70808
},
{
"date":"2018-02-03",
"value":0.70808
},
{
"date":"2018-02-04",
"value":0.70871},
{
"date":"2018-02-05",
"value":0.717141
},
{
"date":"2018-02-06",
"value":0.71645
},
{
"date":"2018-02-07",
"value":0.716369
}
]
【问题讨论】:
-
你能显示你的ajax调用的结果吗?
标签: jquery ajax grep each jquery-deferred