如何用PHP&填充表格JSON?

时间:2011-08-24 13:18:03

标签: php jquery json html-table

在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);
    }
});

但是当返回数据时,它只会在<a>标记之间插入<table>元素,而不会在<td><tr>之间插入。{/ p>

任何人都可以看到为什么它可能会忽略表行和表数据标记,但仍保留锚标记和所有所需内容?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

根据评论,在表格中添加<tbody>似乎可以解决这个问题。

答案 2 :(得分:0)

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

$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;

}