【问题标题】:json multidimensional array and jquery?json多维数组和jquery?
【发布时间】:2010-11-20 22:53:32
【问题描述】:

我用 PHP 创建这个输出:

foreach ($bk as $blink) { $out["url"][] = $blink->url; $out["anchor"][] = $blink->anchor; }

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

我想通过 $.ajax 调用接收和处理输出。

您能否为我指出一个关于使用 javascript/jquery 的多维数组的不错的教程,或者帮助我循环 * 遍历 json 结果?我对此感到有些困惑。

  • 我想把它们放在桌子上,所以我将使用<td>url-i</td><td>anchor-i</td>。这部分,我想通了。将正确的值放在 url-ianchor-i 上是问题所在。

【问题讨论】:

    标签: php javascript jquery zend-framework


    【解决方案1】:

    我想 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】:

      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】:

        您可以查看任何模板框架,但对于这种确切的情况,检查以下两者之一会很有用:pure by beebolejquery pure html templates

        自己动手可能很诱人,但为什么要重新发明井?根据我的经验,我知道框架的速度大约是自制代码的 2 倍。

        【讨论】:

          猜你喜欢
          • 2011-08-08
          • 1970-01-01
          • 2011-01-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-07
          • 2013-10-22
          • 1970-01-01
          相关资源
          最近更新 更多