Контроллер AJAX и Codeigniter

#php #ajax #codeigniter #jquery #rss

#php #аякс #codeigniter #jquery #RSS-канал

Вопрос:

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

Мой Контроллер 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?

Ответ №1:

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

 $.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.
         */
    }

}
  

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

Ответ №2:

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

   $.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);
 })