AJAX и контроллер Codeigniter - PullRequest
0 голосов
/ 16 октября 2011

Я хочу динамически анализировать RSS-каналы. У меня есть список выбора, и я хотел бы отправить значение (id) в контроллер с помощью AJAX. и после, я хочу проанализировать RSS-каналы, соответствующие id

Мой контроллер home.php:

function view($type = NULL)
{
    $data = array();
    $this->load->model('flux_model');

    if ($type == "ajax") {// load ajax view                 
        $flux = $this->flux_model->get_one_flux($this->input->post('id'));// ajax id
        $flux2 = $flux[0]->url_flux;
        $xml = new SimpleXMLElement($flux2, NULL, TRUE);
        //my foreach
        $this->load->view('messages_list', $data);
        }
    else{ // load the default view      
        $nb_min = 0;
        $nb_max = 7;
        $nombre = mt_rand($nb_min,$nb_max);
        $flux = $this->flux_model->get_one_flux($nombre);
        $flux2 = $flux[0]->url_flux;
        $xml = new SimpleXMLElement($flux2, NULL, TRUE);
        //my foreach
        $this->load->view('default', $data);
        }
}

Ajax-скрипт:

    $("#myform1 #rss").change(function(){  
    var msg = $('#myform1 #rss').val();

    $.post("<?= site_url('home/view/ajax') ?>", {id: msg}, function() {
        $('#main').load("<?= site_url('home/view/ajax') ?>");
        $('##myform1 #country').val('');
    });

});

просмотр работ по умолчанию, я разбираю RSS-канал в случайном порядке но с представлением ajax у меня есть эта ошибка: Сообщение: SimpleXMLElement :: __ construct (): предупреждение ввода-вывода: не удалось загрузить внешнюю сущность ""

похоже, я не могу получить идентификатор ?! проблема ajax?

Ответы [ 2 ]

1 голос
/ 17 октября 2011

Я думаю, что ваша проблема с

$.post("<?= site_url('home/view/ajax') ?>" [etc.]

Поскольку конфигурации многих сайтов препятствуют межсайтовым запросам Ajax (см. XSS ), ваш $ .post будет заблокирован. Вместо этого попробуйте что-то вроде:

$.post("controller/method/parameters" [etc.]

Пример :

В вашем JavaScript:

$.post("ajax/myajax/myparam",{},function(data) { alert(data); });

А в вашем файле controllers / ajax.php:

class Ajax extends CI_Controller

    public function __construct()
    {
        parent::__construct();
    }

    public function myAjax(parameter='')
    {
        /**
         * Load models, or whatever. Then echo the results, so that
         * $.post gets its "data" var.
         */
    }

}

Надеюсь, это поможет!

0 голосов
/ 17 октября 2011

Я просто заменяю:

  $.post("<?= site_url('home/view/ajax') ?>", {id: msg}, function() {
  $('#main').load("<?= site_url('home/view/ajax') ?>");
  $('##myform1 #country').val('');
  });

на

  $.post('<?= site_url('home/view/ajax') ?>', options,     function(data) {
  $('#content').html(data);
 })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...