【发布时间】:2015-07-12 21:36:26
【问题描述】:
对于我们研究项目的一部分,我们需要将字符串数组与 xml 数据库进行比较。所以我的想法是分成两部分(因为我们需要两次比较功能)。首先,我用 $.each 遍历数组,然后将值传递给另一个函数,该函数向 xml 发出 ajax 请求,将值与 xml 中的每个数据进行比较,如果找到,它将它推送到应该是的数组中最后返回。
在一个函数中调用 jquery.each():
function doSomething(){
liste = ["test1","test32","test22"];
$.each(liste, function(index, value){
var checkIt = compareDataBase(value);
if(checkIt.length>0) //do Something
});
}
这是比较值并返回数组的函数:
function compareDataBase(foo){
var lists = [];
$.ajax({
type:"GET",
url: "data/database/datenbank.xml",
dataType:"xml",
success: function(xml){
$(xml).find('product').each(function(index, element){
var current_product = $(this).text();
if(current_product.indexOf(foo)>-1)lists.push(current_product);
});
},
error: function(){
console.log("Fehler bei Produkte auslesen");
}
});
return lists;
}
但遗憾的是,这不起作用。 "checkIt" 总是未定义,因为它不等待 ajax... 我尝试使用 $.when 函数或给 compareDataBase() 函数一个回调,但不知何故两者都不起作用(我认为是因为 我说错了)
所以也许有人知道如何做到这一点?
感谢您的帮助!
br sebi
【问题讨论】:
-
如果需要某种同步,您应该使用回调处理程序来异步处理所有项目,或者在完成时使用一个处理程序调用下一个。也可以使用 Promise(可能它们也会使项目更加透明)
-
感谢您的评论!但是我在哪里以及如何使用回调使其工作? - 用我以前从未工作过的 Promises...
标签: javascript jquery ajax xml each