代码之家  ›  专栏  ›  技术社区  ›  johnjohn

json多指数组和jquery?

  •  1
  • johnjohn  · 技术社区  · 14 年前

    我用php创建这个输出:

    foreach($bk表示$blink){ $out[“url”]=$blink->url; $out[“锚”]=$blink->锚; }

    $json=zend_json::encode($out); 回声($json);

    我想用一个$.Ajax调用接收和处理输出。

    你能给我介绍一个关于使用javascript/jquery的多维数组的不错的教程吗?或者帮助我循环*JSON结果?我有点困惑。

    谢谢您!!

    • 我想把它们放在桌子上,所以我要用 <td>url-i</td><td>anchor-i</td> . 这部分,我明白了怎么做。将正确的值 url-i anchor-i 是问题所在。
    3 回复  |  直到 14 年前
        1
  •  1
  •   Orbling    14 年前

    我可以想象JSON的输出会是这样的:

    {'url': ['url1', 'url2', ... ],
     'anchor': ['anchor1', 'anchor2', ... ]}
    

    如果是这样的话,那么它们的长度是相等的(重要的是,索引也是相等的),您可以使用 jQuery.each() .

    $.getJSON('jsonapp.php', function(data) {
      $.each(data.url, function(index, url) {
        var anchor = data.anchor[index];
        $('#mytable').append('<tr><td>' + url + '</td><td>' + anchor +'</td></tr>');
      });
    });
    

    我没有运行该代码,所以它可能有一些缺陷,但这就是它的要点。

        2
  •  1
  •   Steven    14 年前

    PHP可以尝试 cast objects into arrays 就其本身而言,对于简单的东西,它通常工作得很好。

    对于多维数组,当涉及到数组时,javascript与大多数其他高级编程/脚本语言没有太大的区别。实际上,任何关于多维数组的在线教程都可以。多维数组只是一个数组数组。

    当您接收到字符串客户端时,您只需要解析它。jquery有 its own method ,但您可以使用 JSON.parse . 然后,根据您设置数组的方式,您可能需要这样做。

    <? $count = count($json_parsed['url']); for($i = 1; $i < $count; $i++) : ?>
    <td><?=$json_parsed['url'][$i];?></td>
    <td><?=$json_parsed['anchor'][$i];?></td>
    <? endfor; ?>
    

    但这在哲学上可能不是最好的方法。如果你有一大堆的对象,你想用它们做一个表,最好的方法是创建一个由关联数组表示的对象数组(类似于其他编程语言中的哈希表)。PHP本机尝试将对象转换为关联数组。如果 Zend_Json::encode 自动完成。如果是这样,您可能只需要拉动:

    echo Zend_Json::encode($bk);
    

    如果没有,请告诉我,我们将讨论如何做到这一点。

        3
  •  0
  •   mpapis    14 年前

    您可以查看任何模板框架,但对于这种情况,检查这两个框架中的一个非常有用: pure by beebole jquery pure html templates .

    自己做可能很有吸引力,但为什么要重新设计好呢——根据我的经验,框架比自制代码快2倍。