Codeigniter jQuery проблема - PullRequest
       1

Codeigniter jQuery проблема

0 голосов
/ 23 августа 2011

Я создаю приложение с codeigniter и хочу опубликовать некоторые данные, используя jQuery, но по какой-то причине это не работает. Вот код, что я делаю не так?

$.ajax({
    url: "<?=site_url('requests/save')?>",
    type: "POST",
    data: data,
    success:function(msg){
        alert(msg)
    }
});

Я еще не написал никакого кода в контроллере, просто что-то простое, чтобы проверить его. Также, пока javascript обеспокоен этим. Аякс срабатывает, когда пользователь нажимает кнопку.

function save()
{
    if($this->input->is_ajax_request()) {
        echo 'ajax';
    }
    else
    {
        echo'sdfs';
    }

}

Ответы [ 3 ]

0 голосов
/ 23 августа 2011

Dante

Сначала убедитесь, что вы загружаете своего помощника:

$this->load->helper('url');

Также опубликуйте JAVASCRIPT для нас, а не PHP. Javascript - это то, что терпит неудачу, а не CI PHP. У вас может быть проблема с PHP на вашем контроллере для 'requests/save', вы это проверяли?

0 голосов
/ 23 августа 2011

Полагаю, вам нужно передать маркер подделки межсайтовых запросов.

Если вы установили XSS в значение true в своей конфигурации, тогда помощник формы создаст скрытое поле, которое необходимо передать на ваш сервер.

Убедитесь, что вы правильно собираете данные формы.Проще всего использовать jquery с помощью функции .serialize ().

Загрузить помощник по URL в autoload.php.Ваш URL-адрес в вызове ajax должен быть просто «запросы / сохранить».

Кроме того, php-сокращенные эхо-теги - плохая практика.

<?php echo ?> 

для лучшей переносимости кода

Перенес мой комментарий в ответ

0 голосов
/ 23 августа 2011

РЕДАКТИРОВАТЬ: чтобы протестировать ajax, используйте относительный URL-адрес, вместо этого используйте встроенный тег php в вашем js, к вашему контроллеру, который будет работать в любых условиях (в CI), независимо от того, удалили ли вы index.php из вашего URL (используя htaccess) или нет, включив index.php в ваш URL.

$.post('/index.php/request/save', { foo: 'bar' }, function (html) { 
   alert(html);
}); 

На целевом контроллере

function save()
{
   if($this->input->is_ajax_request()) 
   {
       echo $this->input->post('foo') ? $this->input->post('foo') : 'Not Bar';
   }
   else
   {
       echo'Not from AJAX';
   }

}

РЕДАКТИРОВАТЬ: также убедитесь, что вы уже загрузили помощник URL перед использованиемего функция

$this->load->helper('url');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...