我正在尝试从我使用回调创建的函数中访问对象的值,但是遇到了一些麻烦。我还是jQuery / javascript的新手。
我按如下方式调用该函数:
siteDeps(id,function(data){
$.each(data,function(key,val) {
console.log(key);
console.log(val);
});
});
该函数从XML数据运行5个ajax查询,并将数据作为多维对象返回;这是一段摘录,展示了它的内容:
function siteDeps(id,callback) {
var result = {
sitecontactid : {},
siteaddressid : {},
sitephoneid : {},
contactaddressid : {},
contactphoneid : {}
};
...//....
var url5 = decodeURIComponent("sql2xml.php?query=xxxxxxxxxxx");
$.get(url5, function(data){
$(data).find('ID').each(function(i){
result.sitephoneid[i] = $(this).text();
});
});
callback(result);
}
console.log输出显示:
sitecontactid
Object
0: "2"
1: "3"
__proto__: Object
siteaddressid
Object
0: "1"
__proto__: Object
sitephoneid
Object
0: "1"
1: "5"
2: "54"
__proto__: Object
contactaddressid
Object
0: "80"
__proto__: Object
contactphoneid
Object
0: "6"
__proto__: Object
如何以我可以使用的格式提取回调数据,例如sitephoneid:“1”,“5”,“54”
或者有更好/更简单的方法吗?
提前致谢。
答案 0 :(得分:0)
要获得该输出,您可以使用Javascript“join”函数:
siteDeps(id, function(data){
console.log(JSON.stringify(data));
var values = [];
for (var prop in data.sitephoneid) {
values.push(data.sitephoneid[prop])
}
var str = '"' + values.join('","') + '"';
console.log(str);
// output: "1","5","54"
});
function siteDeps(id,callback) {
var result = {
sitecontactid : {},
siteaddressid : {},
sitephoneid : {},
contactaddressid : {},
contactphoneid : {}
};
...//....
var url5 = decodeURIComponent("sql2xml.php?query=xxxxxxxxxxx");
$.get(url5, function(data){
$(data).find('ID').each(function(i){
result.sitephoneid[i] = $(this).text();
});
// callback needs to go inside the ajax call, because it's asynchronous
callback(result);
});
}