我在如何解决codeigniter中的ajax帖子时遇到问题。 GET方法运行良好,但当我将其更改为post时,它已不再有效。我观察到当我在配置文件中禁用了我的csrf_protection时,它正在工作,但是当我启用它时,它不工作。我想在post方法工作时使用csrf_protection。有谁能够帮我?感谢..
<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';
}
}
答案 0 :(得分:0)
jQuery期望标头不是默认的HTTP标头。您需要更改内容类型的标题我相信与您的输出相匹配。有关如何使用codeigniters输出类执行此操作,请参阅附带的文档。 http://ellislab.com/codeigniter/user-guide/libraries/output.html