Как заполнить таблицу с помощью PHP и JSON? - PullRequest
3 голосов
/ 24 августа 2011

В CodeIgniter я пытаюсь создать таблицу, которая заполняется данными из API Graph Facebook.

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>.

Может кто-нибудь понять, почему он может игнорировать строки таблицы и теги данных таблицы, но при этом сохранять теги привязки и весь желаемый контент?

Ответы [ 3 ]

0 голосов
/ 24 августа 2011

Согласно комментариям, добавление <tbody> в таблицу, казалось, исправило это адекватно.

0 голосов
/ 26 июля 2017

Возможно, попробуйте добавить разметку в строку и вернуть окончательное значение?

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

}
0 голосов
/ 24 августа 2011

Пробовали ли вы print_r ($ json) перед операцией if, чтобы посмотреть, получаете ли вы какие-либо данные из данных Facebook?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...