0

我知道关于这个主题有很多问题和答案,但没有一个回答我的具体查询 - 我一直在搜索和转圈一个月!

我正在使用 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

但是现在 haystack 不是 25 个元素(因为有 25 个名称、图像等),当我在这里提取时,它经历了 100 次(我想是 4 次 x 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++;
    }
    });

如果有人想看看,它就在这里。太令人沮丧了,我会在 5 分钟内用 PHP 完成这项工作。

http://cybril.com/donation/donate.php

提前感谢您的帮助。

4

1 回答 1

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;
        });
    });
于 2013-09-14T01:08:02.883 回答