#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