Помощь PHP (Codeigniter) и ajax - PullRequest
       1

Помощь PHP (Codeigniter) и ajax

0 голосов
/ 28 января 2011

Я пытаюсь создать приложение, подобное твиттеру, в котором пользователь вводит некоторые данные в форму и, используя ajax (библиотеку jquery), пользователи видят, что их отправка в реальном времени переходит к вершине всех остальных данных.

Как это работает, пользователь отправляет форму, и данные отправляются в базу данных. Я также хочу добавить данные в список данных, используя ajax.

Моя проблема в том, что я могу получить доступ только к тем данным, которые метод PHP создает из запроса ajax, если я echo $var; в моем методе php, мне это не кажется правильным, могут ли некоторые сказать мне, что я делаю неправильно, пожалуйста?

    public function feed() {
        $this->load->library('form_validation');
        $this->load->helper('dates');
        $data['feed'] = $this->f->get_feed_by_employer($this->session->userdata('employer_id'));
        $this->form_validation->set_error_delimiters('<div class="error">', '</div>');
        $this->form_validation->set_rules('content', 'content', 'required|trim|max_length[140]');
        $this->form_validation->set_rules('retrain', 'retrain position', 'trim|max_length[1]');

        if ($this->form_validation->run() == FALSE)
        {
            echo validation_errors('<div class="error">', '</div>');
            $this->template->build('employer/feed', $data);
        }
        else
        {
            $insert = array(
                'content' => $this->input->post('content'), 
                'retrain' => $this->input->post('retrain'),
                'created_at' => time(),
                'employers_id' => $this->session->userdata('employer_id')
            );

            if($this->f->insert($insert)) {
                echo $insert['content'];
            }
        }
}

и JQuery

$('#employer_feed').submit(function(){
    $.ajax({
        url: '/employer/feed',
        data: $('#employer_feed').serialize(),
        type: 'POST',
        success:function(html) {
            $('#feed').append('<div class="feed_item">'+html+'</div>');
        }
    });
    return false;
});

Ответы [ 2 ]

2 голосов
/ 28 января 2011

Нет проблем с использованием echo при работе с ajax-запросом, на самом деле это путь.Также вы можете использовать echo json_encode($output); в зависимости от типа вашего запроса ajax.

Проверьте эту статью , используя is_ajax, чтобы узнать, когда echo и когда загружать ваши представления - это чистый способ!

, поэтому создайте файл is-ajax_helper.php в папке application/helpers/:

<?php

function is_ajax(){
    return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) 
            && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');  
}

И в вашем config/autoload.php:

$autoload['helper'] = array('is-ajax');

И просто проверьте, если этоАякс звони или нет!

РЕДАКТИРОВАТЬ:
Поскольку Codeigniter 2.0 официально выпущен, а плагины теперь заменены помощниками, я обновил свой ответ.

0 голосов
/ 09 января 2012

В настоящее время вы можете просто использовать $this->input->is_ajax_request(), доступный в входном классе , для достижения тех же результатов, что и при использовании хелпера ручной работы @ ifaour.

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