将其简化为:
$.getJSON('/drinks/getColors', function(items) {
colors = items;
});
$.each(colors, function(index2, value2) {
if (value.name == value2.name) {
curColor = value2.color;
}
});
我稍后会使用此信息,因此我将其存储在本地,但有时它是未定义的,有时它很好。是什么让它如此不可靠?
它似乎遇到的问题是颜色有时是未定义的。在收到数据之前处理数据是否存在时间问题?
^ === EDIT === ^
尝试在不粘贴整个项目的情况下为您提供所有必要的信息。
因此,在我的drinks/find
页面的页面加载中,我向我的数据库运行GET请求以获取饮料详细信息并填充页面。
$(document).ready(function() {
loadDrink(curDrink);
});
从那里,该函数获取数据:
$.getJSON(address, function(item) {
#Work with data, update pages, loops, etc
}
通常,但并非总是如此,我会从Jquery收到TypeError: a is undefined
错误,但刷新几次最终会让它发挥作用。
以下是调用我的数据库的路径:
router.get('/find/details/:name', function (req,res){
var db = req.db;
nameToSearch = req.params.name.toLowerCase();
db.collection('recipes').findOne({name: nameToSearch}, function (err, result) {
res.send(result);
});
});
我不确定问题是什么。我的一些查询中有空格(要修复),但单词搜索也会出现此错误,因此我不认为这是导致问题的原因。
我猜测它与试图处理尚未收到的数据的页面有关。但正在进行的工作也是对$.getJSON
的回调,所以我认为这不会成为一个问题。
如果你们发现任何非常受欢迎的东西,我还可以提供更多信息,如果需要的话,不确定相关的内容。
谢谢!
答案 0 :(得分:0)
我首先要看的是GET请求,以保证每次都实际返回数据。至于'a is undefined`错误,我假设您使用的是JQuery的缩小版本。尝试使用非缩小版本,假设问题是客户端,可能会指向正确的方向。
答案 1 :(得分:0)
这是一个完全不相关的问题,我在这里解释得很严重。只是尝试在$.get
之后处理数据,而不是在回调内部。保持代码异步!