Codeigniter: невозможно отобразить данные - PullRequest
0 голосов
/ 06 декабря 2011

Хорошо, ребята,

У меня странная проблема с моей функцией.

public function getOutages($Site)
{
    // pull a json data dump of all outages 
    If(!$Site){
        echo '[{}]';
    }else{
        $this->load->database('default', TRUE);
        $this->db->where('Clear', '0');
        $this->db->where('FracID', $Site);
        $query = $this->db->get('vw_Outages');

        echo json_encode($query->result_array());
    }
}

При прямом приеме ничего не будет отображаться.Включив профилировщик, он работает нормально и выводит данные.

public function getOutages($Site)
{
$this->output->enable_profiler(TRUE);
    // pull a json data dump of all outages 
    If(!$Site){
        echo '[{}]';
    }else{
        $this->load->database('default', TRUE);
        $this->db->where('Clear', '0');
        $this->db->where('FracID', $Site);
        $query = $this->db->get('vw_Outages');

        echo json_encode($query->result_array());
    }
}

Любое понимание этого было бы более чем приветствоваться: D.

Ответы [ 2 ]

7 голосов
/ 06 декабря 2011

CodeIgniter имеет систему буферизации вывода (которая также позволяет ему выполнять такие вещи, как вывод контроллера кэша, устанавливать заголовки и собирать выходные данные представления).Вы обычно не echo из метода контроллера.Сделайте это вместо:

public function mymethod() {
    $anobject = array();
    $output = json_encode($anobject);

    $this->output->set_content_type('application/json');
    $this->output->set_output($output);
}

См. Документацию CodeIgniter для класса вывода .

0 голосов
/ 06 декабря 2011

Возможно, у вас включена буферизация вывода или сжатие - это может вызвать такие проблемы. Также убедитесь, что переменная, которую вы пытаетесь вывести, не пуста. Если это не помогает, попробуйте использовать представление для отображения данных.

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