#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);
})