【问题标题】:How to fill a table with PHP & JSON?如何用 PHP 和 JSON 填充表格?
【发布时间】:2011-11-02 19:33:31
【问题描述】:

在 CodeIgniter 中,我正在尝试创建一个表格,其中填充来自 Facebook Graph API 的数据。

JSON 加载一个控制器,将数据传递给一个视图,而正是这个视图被添加到一个预先存在的表中。

我的 PHP 视图如下所示:

if (array_key_exists('is_community_page', $json)==FALSE){
    echo '<tr>';
    echo '<td><a href="http://graph.facebook.com/' . $json['id'] . '">ID</a></td>';
    echo '<td><a href="' . $json['link'] . '">'. $json['name'] .'</td>';

    if (!empty($json['website'])) {
        if (!preg_match("~^(?:f|ht)tps?://~i", $json['website'])) {
           $json['website'] = "http://" . $json['website'];
        }
        echo '<td><a href="' . $json['website'] . '">' . $json['website'] . '</a></td>';
        }
    else {
        echo '<td>N/A</td>';
        }

    if (!empty($json['likes'])) {
        echo '<td class="num">' . number_format($json['likes']) . '</td>';
        }
    if (!empty($json['checkins'])) {
        echo '<td class="num">' . number_format($json['checkins']) . '</td>';
        }
    echo '</tr>';
    }

jQuery/JSON 看起来像这样:

$.ajax({
    url: "<?php echo site_url('controller/function'); ?>",
    type: 'POST',
    data: form_data,
    success: function(data) {
        $('#results_table').html(data);
    }
});

但是当数据返回时,它只是在&lt;table&gt;标签之间插入&lt;a&gt;元素,而不是&lt;td&gt;&lt;tr&gt;之间。

谁能明白为什么它可能会忽略表格行和表格数据标签,但仍保留锚标签和所有需要的内容?

【问题讨论】:

  • 你应该考虑 tbody 和 html 表格中的其他东西。
  • 我同意 tbody。不使用它和 ajax 时,我得到了一些奇怪的表格结果。我不完全相信这是问题所在,但请试一试,让我们知道会发生什么。
  • 嗯,好的,谢谢,但 似乎没有任何改变。
  • 更新:我清除了缓存,现在&lt;tbody&gt; 似乎可以工作了。如果你们中的任何一个想要创建这个作为因果报应的答案,我很乐意将它传递下去。
  • #results_table 元素是什么? &lt;table&gt; 标签?还是包裹桌子的&lt;div&gt;

标签: php jquery json html-table


【解决方案1】:

您是否在 if 之前尝试过 print_r($json) 以查看是否从 Facebook 数据中获得任何输出?

【讨论】:

    【解决方案2】:

    根据 cmets,将 &lt;tbody&gt; 添加到表中似乎可以充分解决此问题。

    【讨论】:

      【解决方案3】:

      也许尝试将标记附加到字符串并返回最终值?

      $row_data = '';
      if (array_key_exists('is_community_page', $json)==FALSE){
      
          $row_data .= '<tr>';
          $row_data .= '<td><a href="http://graph.facebook.com/' . $json['id'] . '">ID</a></td>';
          $row_data .= '<td><a href="' . $json['link'] . '">'. $json['name'] .'</td>';
      
          if (!empty($json['website'])) {
      
              if (!preg_match("~^(?:f|ht)tps?://~i", $json['website'])) {
                 $json['website'] = "http://" . $json['website'];
              }
      
              $row_data .= '<td><a href="' . $json['website'] . '">' . $json['website'] . '</a></td>';
      
              } else {
                  $row_data .= '<td>N/A</td>';
              }
      
          if (!empty($json['likes'])) {
              $row_data .= '<td class="num">' . number_format($json['likes']) . '</td>';
          }
      
          if (!empty($json['checkins'])) {
              $row_data .= '<td class="num">' . number_format($json['checkins']) . '</td>';
          }
      
          $row_data .= '</tr>';
      
          return $row_data;
      
      }
      

      【讨论】:

        猜你喜欢
        相关资源
        最近更新 更多
        热门标签