отправка сообщений ajax не работает в codeigniter

#php #ajax #codeigniter

#php #ajax #codeigniter

Вопрос:

У меня возникла проблема, как решить сообщение ajax в codeigniter. Метод GET работает хорошо, но когда я изменил его на post, он больше не работает. Я заметил, что когда я отключил свою csrf_protection в файле конфигурации, она работает, но когда я ее включил, она НЕ РАБОТАЕТ. Я хочу использовать csrf_protection, включенный во время работы метода post. Кто-нибудь может мне помочь? Спасибо..

 <script> 
 $(document).ready(function(){  
  $('#submit').click(function(event) {  
    $.ajax({ 
        type: 'POST',
        url: '/common/test',
        data: {  
            <?php if ($this->config->item('csrf_protection') === true) : ?>
                post_data.<?php echo $this->security->get_csrf_token_name()?> = '<?php echo $this->security->get_csrf_hash()?>' 
            <?php endif ?>
        },
        success: function(response) {
            alert(response);
          }
      }); 
      return false; 
   });
});
  </script>  
 <input type="text" name="name" id="name">
 <input type="submit" value="submit" name="submit" id="submit"> 
  

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

   <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

  class Common extends CI_Controller {

     function test(){ 
      echo 'test';
    }

   }
  

Ответ №1:

jQuery ожидает, что заголовки не будут HTTP-заголовками по умолчанию. вам нужно изменить заголовки content-type, которые, как я полагаю, соответствуют вашим выводам. Смотрите прилагаемую документацию о том, как использовать выходной класс codeigniters для этого. http://ellislab.com/codeigniter/user-guide/libraries/output.html