我知道这个主题有很多问题和答案,但没有回答我的具体问题 - 我一直在搜索并绕圈子走了一个月!
我使用php从may数据库获取值并通过json返回:
$staff_list = array(
"name" => $staff_names,
"id" => $staff_ids,
"img" => $staff_imgs,
"typeID" => $staff_types,
);
print(json_encode($staff_list));
我正在使用javascript:
$.getJSON(requestURL, function(data) {
if( data.errorResponse ) {
element.html("<p>(" + data.errorResponse.message + ")</p>");
} else {
$('#designeesloading').remove();
$.each(data, function(i, field){
$.each(field, function(x, value){
haystack.push({
i:value //this should put into 4 arrays as per above shouldn't it?
});
});
});
} //errorResponse else
}); //getJSON
但是现在不是干草堆25个元素(因为有25个名字,图像等),当我去这里提取时,它经历了100次(我想象的是4次×25):
(每次有人在搜索框中输入时都会触发):
$.each(haystack, function(i,v) { //this goes through 100 times instead of 25
if ((v['name'].toLowerCase().indexOf(needle) >= 0)) {
choices.push({ //only want to add to choices if what they are searching for is found
"id":v['id'],
"name":v['name'],
"typeID":v['typeID'],
"img":v['img']
});
resultflag++;
}
});
如果有人想看一眼就在这里。令人沮丧的是,我已经用PHP在5分钟内完成了这项工作。
http://cybril.com/donation/donate.php
提前感谢您的帮助。
答案 0 :(得分:0)
您的代码存在两个问题。首先,您只需将所有内容推送到haystack
,您就不会创建嵌套对象来保存每个工作人员。其次,在像{ key: val }
这样的对象文字中,i
未被评估,它被视为文字名称;仅评估val
。如果要使用计算键,则必须使用方括号表示法。
$.each(data, function(i, field){
$.each(field, function(x, value){
if (!haystack[x]) {
haystack[x] = {};
}
haystack[x][i] = value;
});
});